我有以下腳本:光盤放入while循環目錄不起作用
#!/bin/bash
ls -1 | while read d
do
[[ -f "$d" ]] && continue
echo $d
cd $d
done
問題是,每個CD說「[路徑]:沒有這樣的文件或目錄」,爲什麼呢? 文件夾存在,因爲我列出它...
我有以下腳本:光盤放入while循環目錄不起作用
#!/bin/bash
ls -1 | while read d
do
[[ -f "$d" ]] && continue
echo $d
cd $d
done
問題是,每個CD說「[路徑]:沒有這樣的文件或目錄」,爲什麼呢? 文件夾存在,因爲我列出它...
我看到你的代碼的兩個問題:
cd
,你呆在那裏。請試試這個:
#!/bin/bash
ls -1 | while read d
do
test -d "$d" || continue
echo $d
(cd $d ; echo "In ${PWD}")
done
問題是你改變腳本中的工作目錄。這意味着第二個cd
將在您在前面的cd
中輸入的子目錄中執行。
dir=`pwd`
ls -1 | while read d
do
[[ -f "$d" ]] && continue
cd "$dir"
echo $d
cd $d
#....
done
已經嘗試過,不工作>'沒有這樣的文件或directory' –
請問您的目錄名稱包含空格(S)? –
不知道你想才達到的。 你想做某種遞歸的dic遍歷嗎?
這裏的豪我會做:
#!/bin/bash
CWD="$(pwd)" #save starting directory
ls -1 | while read d
do
[[ ! -d "$d" ]] && continue
cd "$d"
echo "Changed to directory" $d
#Now you can do someting in the sub-directory
cd "$CWD" #Change back to old directory
done
你不應該使用ls
這樣。
#!/bin/bash
for d in *
do
[[ ! -d "$d" ]] && continue
echo "$d"
cd "$d"
# do something
cd "$OLDPWD"
done
加上大括號做這個工作,謝謝。 –