우분투16.04
for의 출력이 client in */; do
후행 슬래시를 생성하지 않더라도 루프 내의 파일에 대해 시간 테스트를 실행하는 동안 $client 변수를 에코하면 후행 슬래시가 발생합니다.
cd "$wDir"
for client in */; do
cd "$wDir"/"$client";
#-- check to see if any .csv files exists
if ls *.csv &>/dev/null; then
for csvfile in *.csv; do
if test $(find "$csvfile" -mmin +2880); then
echo "$client has files older than 2 days ..." >> "staleFtpAccts"
fi
done
fi
done
스크립트를 실행하면 다음과 같이 $client 변수 뒤에 /가 배치됩니다.
root@me /home/frank # bash script.sh
Start ...
000029_000020/ has files older than 2 days ...
#--
Finished ...
Start ...
000033_000040/ has files older than 2 days ...
#--
Finished ...
Start ...
000033_000041/ has files older than 2 days ...
#--
Finished ...
Start ...
000033_000042/ has files older than 2 days ...
#--
Finished ...
Start ...
000033_000043/ has files older than 2 days ...
#--
Finished ...
이것이 내가 추구하는 결과입니다 ...
root@me /home/frank # bash script.sh
Start ...
000029_000020 has files older than 2 days ...
#--
Finished ...
Start ...
000033_000040 has files older than 2 days ...
#--
Finished ...
Start ...
000033_000041 has files older than 2 days ...
#--
Finished ...
Start ...
000033_000042 has files older than 2 days ...
#--
Finished ...
Start ...
000033_000043 has files older than 2 days ...
#--
Finished ...
답변1
이 시도POSIX 매개변수 확장:
echo "${client%/}"
그래서
echo "${client%/} has files older than 2 days ..."
매개변수 확장확장 매개변수:
"$foo"
,"$1"
.이를 사용하여 문자열 또는 배열 작업을 수행할 수 있습니다:"${file%.mp3}"
,"${0##*/}", "${files[@]: -4}"
.언제나인용하십시오. 바라보다:http://mywiki.wooledge.org/BashFAQ/073그리고 man bash의 "매개변수 확장". 또한보십시오http://wiki.bash-hackers.org/syntax/pe.