gpt4 book ai didi

linux - foreach 循环 : files. 列表中的 TCSH 错误:找不到命令

转载 作者:太空宇宙 更新时间:2023-11-04 10:05:44 33 4
gpt4 key购买 nike

我正在尝试将用户输入变量(文件名)传递到 tcsh 中的 foreach 循环中。例如,用户输入的变量是“files.list”(保存在与保存 Shell 脚本相同的文件夹中,并从中运行)。

这是我的代码:

 #! /usr/bin/tcsh -f 

echo please enter files list

set x = $<

foreach i ('$x')
echo $i
end

我想要的是将“files.list”中的每个单词输出到屏幕上。 Files.list 包含 5 行,每行都有一个文件名。

myScript22.sh
Mad45.sh
Number32.sh
killBill.sh
gotMilk.sh
bugslife.sh

我收到一个错误 - “foreach:未加括号的单词。”

可能是 'cat $x' 没有正确调用 x 变量?如果是这样,我如何设置文件以便它的内容可以循环通过?

感谢任何帮助!

最佳答案

如果你真的真的真的真的真的要用 , 那么以下是正确的方法:

#!/usr/bin/tcsh -f
echo please enter files list
set x = $<

foreach line (" `cat $x` ")
echo "$line"
end

请务必注意 cat 命令位于 之间。不同之处在于, foreach 语句将逐字读取,而双引号版本将逐行读取。这其中的逻辑……值得怀疑。另外,我在 echo 语句中引用了变量 line,因为它实际上会在遇到空行时报错。

,你只需做以下好事:

#!/usr/bin/env bash
echo "Please enter files list"
file=""
while [[ ! -e $file ]]; do read -r file; done

while read -r line; do
echo "$line"
done < "$file"

非常重要的读物:

关于linux - foreach 循环 : files. 列表中的 TCSH 错误:找不到命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52719489/

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