어느 시점에서 여러 폴더의 사용자 권한을 확인해야하는 스크립트를 작성하려고합니다. 경로는 변수에 저장되며 각 경로는 새 줄에 저장됩니다.
지금까지 나는 이것을 가지고있다 :
output=$PATH
output=$(echo "$output" | tr ':' '\n' | sort )
arr=($(echo "$output"))
for i in "$arr"
do
echo "$i"
if ! [[ -x $i ]]; then
echo "You are missing execute Permission on
echo "$i"
fi
done
출력에는 여러 경로, 내 경우에는 내 $PATH
변수 의 내용이 포함 됩니다.
첫 번째 줄에서는 여러 줄 변수를 배열로 변환 한 다음 모든 배열 요소를 반복합니다.
코드를 실행하면 첫 번째 항목에 대해서만 작동 하며 루프를 종료하기 전에 echo "$i"
표시됩니다 /bin
.
그래서 여러 줄 변수를 배열로 변환하지 않은 것 같습니다.
바꾸다:
for i in "$arr"
와:
for i in "${arr[@]}"
$arr
배열의 첫 번째 요소 만 참조합니다. {$arr[@]}
각각 별도의 단어로 모든 요소로 확장됩니다.
또한 bash 4.0 이상이있는 경우 다음 arr
을 한 번에 만들 수 있습니다 .
mapfile -t arr <<<"${PATH//:/$'\n'}"
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다