請注意,即將發佈的代碼有目的地不完美,如果目錄中存在文本文件,但完整的代碼確實有這樣的檢查,將無法工作。但問題是,這樣的:通過unix bash腳本問題進入目錄
#!/bin/bash
for d in *; do
cd $d
done
生產:
./test: line 3: cd: 500: No such file or directory
./test: line 3: cd: 536: No such file or directory
./test: line 3: cd: 560: No such file or directory
./test: line 3: cd: 572: No such file or directory
./test: line 3: cd: out.txt: No such file or directory
./test: line 3: cd: prob1: No such file or directory
./test: line 3: cd: problem2: No such file or directory
./test: line 3: cd: README: No such file or directory
./test: line 3: cd: test: No such file or directory
,其中500,536,560,和572的目錄,應該能夠被打開。如果我只是做一個CD 500,那麼我可以進入目錄沒有問題。但是當我在shell腳本中使用自動化過程時,它不起作用。
好了等以後再進入節目我現在有:
#!/bin/bash
cd "$1"
for d in */; do
(
cd "$d"
for file in $*; do
(
bla="$(head -4 $file|tail -1)"
cd ~cfb43/cs265/a1
echo $bla > out.txt
cd
cd "$1"
cd "$d"
)
done
cd "$1"
)
done
,我得到:
head: error reading `/home/cfb43/cs265/a1': Is a directory
head: error reading `/home/cfb43/cs265/a1': Is a directory
head: error reading `/home/cfb43/cs265/a1': Is a directory
head: error reading `/home/cfb43/cs265/a1': Is a directory
head: error reading `/home/cfb43/cs265/a1': Is a directory
所有我想要做的就是去到一個目錄,並從文件中讀取和獲取第四行文本並將其打印到我的文件夾中的out.txt文件中。我不知道爲什麼這個代碼被卡住在a1而不是至少500或類似的東西。任何進一步的幫助,我會非常感謝
你可能會看看問題的新部分,因爲你說的是什麼工作,但導致了新的問題。你爲什麼要在cd命令中使用「 - 」? –
@ColanBiemer'--'用於保證如果目錄名以'-'開頭(例如'-mydir'),它不會被解釋爲cd命令的選項,而是作爲目錄名。關於你的新錯誤消息,它看起來像你在目錄上調用'head'。你應該檢查operant是否是一個帶有if [[-f「$ file」]]''的常規文件。 – user000001