繁体   English   中英

Bash 脚本循环不递增

[英]Bash script loop not incrementing

我有一个脚本,将 2 -> file#.txt -> newline 输入到我的程序中。 但是,该脚本仅将 file4.txt 输入到我的程序中,即使循环运行了 10 次。 我不确定为什么这会专门针对 i=4 发生。

gnome-terminal --working-directory=/path/to/dir/ -- bash -c "{ for i in {1..10}; 
  do echo "2"; echo "file"$i".txt"; echo $'\n'; done; } | ./program; exec bash"

$字符正在由您的原始 shell 处理,而不是在gnome-terminal中执行的 shell 处理。 此外,嵌入的双引号分隔-c参数,而不是显式传递给bash

您需要转义$"字符以保留它们。

gnome-terminal --working-directory=/path/to/dir/ -- bash -c "{ for i in {1..10}; 
  do echo \"2\"; echo \"file\"\$i".txt\"; echo \$'\n'; done; } | ./program; exec bash"

您也可以将命令放在单引号中,但是您将无法在其中嵌入$'\n' ,因为您无法在单引号中转义引号。 但是您可以使用printf代替echo ,因为它会自行翻译转义序列。

gnome-terminal --working-directory=/path/to/dir/ -- bash -c '{ for i in {1..10}; 
  do echo "2"; printf "file%d.txt\n\n" $i; done; } | ./program; exec bash'

请参阅Bash 中单引号和双引号之间的区别

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM