這是什麼問題?for i in ls - Unix語法
for i in 'ls | grep '^[A-Z]......$'
do
echo $i
done
如果我只是使用命令ls | grep '^[A-Z]......$
我得到的文件,我想
我缺少什麼?
這是什麼問題?for i in ls - Unix語法
for i in 'ls | grep '^[A-Z]......$'
do
echo $i
done
如果我只是使用命令ls | grep '^[A-Z]......$
我得到的文件,我想
我缺少什麼?
你的意思
for i in `ls | grep '^[A-Z]......$'`;do echo $i;done
? actully這是'和'之間的區別,限制在你的shell中,而不是正則表達式或操作系統問題。
不應該反引號嗎?
for i in `ls | grep blahblahblah`; do echo $i; done
當你使用反引號「'」,而不是單引號「'」反引號之間的程序的輸出將被用作外殼輸入,即
for i in `ls | grep '^[A-Z]......$'`;do echo $i;done
的這是「錯誤的」,是不需要使用外部的ls
命令來列出你的文件並grep你的模式。只需使用外殼。
for file in [A-Z]??????
do
echo $file
done
grep
是不必要的,因爲外殼已經做文件名擴展:
for file in $(ls [A-Z]??????)
do
echo $file
done
注意帶空格和類似會打破這個循環的文件名。
ls
可避免太固定前一個問題,而是一個測試需要再添加,以防止處理不存在的文件時,沒有文件匹配的模式:
for file in [A-Z]??????
do
[[ -f "$file" ]] && echo $file
done
+1反引號,而不是你也可以使用'$(....)'替換命令。 請參閱http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_03_04.html – 2010-07-09 08:03:44
我仍然無法讓這個工作? – matt123 2010-07-09 08:09:27
不需要使用外部命令。看到我的答案 – ghostdog74 2010-07-09 08:43:02