簡體   English   中英

sed找不到文件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM