[英]sed cannot find file
我在bash腳本中使用sed來更改一些變量值。 這些變量是不同類型的混合,還包括一些特殊字符:
sed -i -e "s/NPROC=[^,]*,/NPROC=$NPROC/" \
-e "s/NFRPOS=[^,]*,/NFRPOS=$OUTPUTFREQ/" \
-e "s/NFRHIS=[^,]*,/NFRHIS=$OUTPUTFREQ/" \
-e "s/COSP_OUTPUT_FREQUENCY=[^,]*,/COSP_OUTPUT_FREQUENCY=$OUTPUTFREQ/" \
-e "s/TSTEP=[^,]*,/TSTEP=$TSTEP/" \
-e "s/NCEXTR=[^,]*,/NCEXTR=$NCEXTR/" \
-e "s/NVXTR2=[^,]*,/NVXTR2=$NVXTR2/" \
-e "s/NVEXTR=[^,]*,/NVEXTR=$NVEXTR/" \
-e "s/COSP_NLEVELS=[^,]*,/COSP_NLEVELS=$NLEV/" \
-e "s/NVEXTRAGB=[^,]*,/$NVEXTRAGB/" \
-e "s/NVEXTR2GB=[^,]*,/$NVEXTR2GB/" \
-e "s/NFPLEV=[^,]*,/NFPLEV=$NFPLEV/" \
-e "s/CNMEXP=[^,]*,/CNMEXP=\"${EXPID}\"/" \
-e "s/LFPOS=[^,]*,/NFPOS=2/" \
-e "s/NLAT=[^,]*,/NLAT=$NLAT/" \
-e "s/NLON=[^,]*,/NLON=$NLON/" \
$NAMELIST
+ sed -i -e 's/NPROC=[^,]*,/NPROC=10/' ' '
sed: can't read : No such file or directory
但是,我不斷收到錯誤消息,找不到文件$ NAMELIST。 該文件確實在同一目錄中退出,並且名稱沒有錯誤。 添加全路徑也無濟於事。 所以我想知道這個sed命令出了什么問題。
第一個反斜杠后有一個空格。 您不是轉義換行來繼續該命令,而是轉義了空格,因此它認為要編輯的文件名是單個空格。
確保反斜杠是每一行的最后一個字符。
無論出於何種原因,您的NAMELIST變量都不會被擴展。 Sed正在尋找一個文件名為“ $ NAMELIST”的文件,而不是“ /the/path/to/namelist.txt” ...
檢查設置NAMELIST變量的任何邏輯。
另一個解釋是, NAMELIST
確實包含短語“無法讀取”。 白衣:
$ NAMELIST="can't read "
$ sed -e 1d "$NAMELIST"
sed: can't read : No such file or directory
您如何設置NAMELIST
?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.