linux bash脚本错误处理for循环

标签 linux bash shell

我在编写 bash 脚本时遇到问题。我正在编写一个脚本来复制多个文件,然后使用 sed 命令更改内部单词(例如 = a/x),但它不起作用。

#!/bin/bash 
for (( i = 20151122; i <=20151131; i++)) 
do 
  for (( j = 20151122; j <=20151131; j++)) 
  do 
    cp ~/lecture_2015_11_21.stream.smil "lecture_$i.stream.smil"; 
    cd ~/ 
    sed -i 's/$i/$j/g' lecture$j.stream.smil 
  done 
done

最佳答案

对于 sed,要从 bash 获取值,您必须使用双引号(而不是单引号)(这主要是 bash 引用问题):

错误:

sed -i 's/$i/$j/g' lecture$j.stream.smil 

右:

sed -i "s/$i/$j/g" lecture$j.stream.smil 

在这种情况下,您可以将它们全部省略:

 sed -i s/$i/$j/g lecture$j.stream.smil 

关于linux bash脚本错误处理for循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33866754/

相关文章:

linux - 如何使用sed提取数字

c++ - 在 linux 中,如何在 bash 或 c 或 c++ 中观察窗口创建事件

bash - 在 bash 脚本文件中终止具有多个条件的 while 循环

bash - 使用 Bash 一次读取 n 行

java - 用于运行 .jar 的 Shell 脚本可以从终端运行,但不能从 AppleScript 运行

shell - 使用 TCL 的 tk_getOpenFile 压缩多个文件

Linux 中的 C++ 线程

Java DecimalFormat - linux 中不正确的数字格式

java - 我可以在 JVM 在 OOM 上调用的脚本中使用 "kill %p"

linux - 在启动脚本中使用 screen