Python 将多行bash脚本转换为单行

Python 将多行bash脚本转换为单行,python,python-3.x,linux,bash,shell,Python,Python 3.x,Linux,Bash,Shell,我正在尝试编写一个用于python代码的bash脚本 多行bash命令(直接从终端运行时,此命令非常有效) 缺少一个(致命语法错误): 更深入: 在单个命令中组合grep+awk 缺少一个(致命语法错误): 更深入: 在单个命令中组合grep+awk 执行此转换的一种方法可能是将脚本粘贴到命令行上,然后在历史记录中查找-尽管这可能取决于您拥有的命令行编辑器的版本。请注意,do之前需要分号,但后面不需要分号。你会因为分号太多和太少而受到惩罚 另一种方法是逐行折叠脚本中的每一行并继续测试它

我正在尝试编写一个用于python代码的bash脚本

多行bash命令(直接从终端运行时,此命令非常有效)

缺少一个
(致命语法错误):

更深入:

  • 在单个命令中组合
    grep+awk
缺少一个
(致命语法错误):

更深入:

  • 在单个命令中组合
    grep+awk

执行此转换的一种方法可能是将脚本粘贴到命令行上,然后在历史记录中查找-尽管这可能取决于您拥有的命令行编辑器的版本。请注意,
do
之前需要分号,但后面不需要分号。你会因为分号太多和太少而受到惩罚

另一种方法是逐行折叠脚本中的每一行并继续测试它

二进制切分方法是执行前半部分,测试并撤消或继续


一旦您将脚本粘贴到一行,您就可以将其粘贴到python中。

执行此转换的一种方法可能是将脚本粘贴到命令行上,然后在历史记录中查找-尽管这可能取决于您拥有的命令行编辑器的版本。请注意,
do
之前需要分号,但后面不需要分号。你会因为分号太多和太少而受到惩罚

另一种方法是逐行折叠脚本中的每一行并继续测试它

二进制切分方法是执行前半部分,测试并撤消或继续


一旦你把它压缩到一行,你就可以把它粘贴到python中。

而且,第一个分号不应该用引号括起来:
mydatefile=“/var/tmp/date;”,
应该是
mydatefile=“/var/tmp/date”;而
。顺便说一句,那些不带引号的变量引用(
$line
而不是
“$line”
)是可疑的,而
$(echo$line)
而不仅仅是
“$line”
?还有,第一个分号不应该在引号中:
mydatefile=“/var/tmp/date;”,
应该是
mydatefile=“/var/tmp/date”;而
。顺便说一句,那些不带引号的变量引用(
$line
而不是
“$line”
)是可疑的,
$(echo$line)
而不是
“$line”
?在进行这种转换时,只需用分号替换多行脚本中的每一行新行。(换行符和
)都是语句分隔符。进行这种转换时,只需将多行脚本中的每一行换行符替换为分号即可。(换行符和
)都是语句分隔符。
mydatefile="/var/tmp/date"
while IFS= read line
do
    echo $line
        sh /opt/setup/Script/EPS.sh $(echo $line) | grep "WORD" | awk -F ',' '{print $6}'
    sleep 1
done <"$mydatefile"
mydatefile="/var/tmp/date;" while IFS= read line do echo $line; sh /opt/setup/Script/EPS.sh $(echo $line) | grep "WORD" | awk -F ',' '{print $6}'; sleep 1; done <"$mydatefile";
-bash: syntax error near unexpected token `done'
while IFS= read line; do echo ...
#                   ^
#                 here
mydatefile="/var/tmp/date"
while IFS= read line; do
    echo "$line"
    sh /opt/setup/Script/EPS.sh "$line" | 
        awk -F ',' '/WORD/{print $6}'
    sleep 1
done < "$mydatefile"
mydatefile="/var/tmp/date;" while IFS= read line; do echo $line; sh /opt/setup/Script/EPS.sh "$line" | awk -F ',' '/WORD/{print $6}'; sleep 1; done < "$mydatefile";