簡體   English   中英

如何在shell腳本中運行時刪除單引號

[英]How to remove single quotes while running in the shell script

我正在嘗試為修改后的文件以及未修改的文件插入提交消息,但提交失敗。

 git commit -m "${commit_mmes}" "${fil}" $(git ls-files | grep "\.txt" | tr '\n' ' ' | awk '{$1=$1};1')

 git commit -m 'Master Merge-Commit message' music/file1.mp3 'music/file2.txt music/file4.txt3music/file5.txt music/file4.txt'

git ls-files 命令的響應仍然如下

 'music/file2.txt music/file4.txt3music/file5.txt music/file4.txt'

如何刪除它?

除非給出-z否則git ls-files會對“不尋常”字符進行編碼:

如果沒有 -z 選項,帶有“不尋常”字符的路徑名將按照配置變量 core.quotePath 的說明進行引用(請參閱 git-config[1])。 使用 -z 文件名逐字輸出,該行以 NUL 字節結束。

此外, git ls-files能夠在沒有 grep 的情況下直接過濾。

所以你可以這樣做:

git ls-files -x '*.txt' -i -z |\
xargs -0 git commit -m "${commit_mmes}"

我發現了問題,之前分配的 IFS 值沒有取消設置或刪除。 因此它一直在shell腳本中使用。 一旦 IFS 刪除,我就能夠提交文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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