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