从另一个脚本调用脚本时出错

时间:2018-03-19 15:14:46

标签: shell

我使用下面的命令运行脚本test.sh,当我运行./test.sh时它工作正常。但是当我从另一个脚本调用test.sh时会抛出错误

cat main.sh
 sh test.sh

当我跑./main.sh

  

第163行:意外令牌(' line 163:附近的语法错误comm -13<(sort $ input_path / From_mount.txt)<(sort   $ input_path / To_mount.txt)| sed -e“s / $ / \ | / g”>   $ input_path / To_new_mount.txt'

test.sh

comm -13 <( sort $input_path/From_mount.txt ) <( sort $input_path/To_mount.txt ) |  sed -e "s/$/\|/g" > $input_path/To_new_mount.txt

请帮助!!!

这对我有用吗

cat $input_path/From_mount.txt | sort > $input_path/fr_sort.txt
cat $input_path/To_mount.txt | sort > $input_path/to_sort.txt
comm -13 $input_path/fr_sort.txt $input_path/to_sort.txt |  sed -e "s/$/\|/g" > $input_path/To_new_mount.txt

但仍想知道为什么test.sh无效。

1 个答案:

答案 0 :(得分:0)

您好需要在脚本中进行一些修改。首先,始终在shell脚本的顶部添加此#!/bin/bash行。此行指示您要在哪个shell中执行脚本。这里我提到了bash,因此下面的脚本将在bash shell中运行。原因是每个shell都有不同的shell命令语法,特别是对于(if条件,while循环等。所以在test.sh的顶部添加这一行文件以及main.sh文件。同样在main.sh删除sh,然后添加./test.sh。如果可能,请始终使用完整路径。