gpt4 book ai didi

linux - 在 shell 脚本中将文件路径读取为字符串

转载 作者:太空宇宙 更新时间:2023-11-04 11:03:53 25 4
gpt4 key购买 nike

我的目标 -->命令中的文件列表必须逐行读取并用作另一个命令的一部分。

描述-->linux 中的命令返回

archive/Crow.java
archive/Kaka.java
mypmdhook.sh

存储在 changed_files 变量中。我使用以下 while 循环逐行读取文件并将其用作 pmd 命令的一部分

while read each_file
do
echo "Inside Loop -- $each_file"
done<$changed_files

我是编写 shell 脚本的新手,但我假设这些行会在循环中分开并在每次迭代中打印,但我却收到以下错误 --

mypmdhook.sh: 7: mypmdhook.sh: cannot open archive/Crow.java
archive/Kaka.java
mypmdhook.sh: No such file

你能告诉我如何只获取字符串形式的值而不是打开的文件吗?顺便说一句,该文件确实存在,这让我感到更加困惑。(后来在命令中使用它)。我很乐意提供任何有助于我理解和解决此问题的答案。

最佳答案

由于您将数据存储在变量中,因此请使用“here string”而不是文件重定向:

changed_files="archive/Crow.java
archive/Kaka.java
mypmdhook.sh"
while read each_file
do
echo "Inside Loop -- $each_file"
done <<< "$changed_files"
Inside Loop --  archive/Crow.java
Inside Loop -- archive/Kaka.java
Inside Loop -- mypmdhook.sh

引用 "$changed_files" 以保留换行符非常重要,因此 while-read 循环会按您预期的方式工作。一条经验法则:总是引用变量,除非您确切地知道为什么要去掉引号。

关于linux - 在 shell 脚本中将文件路径读取为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26023116/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com