我正在尝试创建一个shell脚本,事实是,如果填充变量$output
,我想更改输出。我在考虑在命令中使用if
检查变量,但我不知道它是否是正确的语法。这是一个例子(当然不起作用):
ls -lisa | awk'$ 5 ==拥有'拥有=“$ owner”| sort -k $ column -n if [ $ output];然后打印> out.txt fi
我不知道它是否会以这种方式工作,如果可能的话。
答案 0 :(得分:1)
内置的exec可以更改正在运行的shell脚本的其余部分的默认标准输出。所以,在这种情况下,你会这样做:
if [ -n "$output" ]; then
exec >out.txt
fi
ls -lisa | awk '$5 == own' own="$owner" | sort -k$column
我不完全确定你要对awk部分做什么,所以这只是你的问题的逐字记录。
另一种选择是将要重定向的脚本部分放入函数中,然后以两种方式之一调用该函数,重定向输出。例如:
do_work() {
ls -lisa | awk '$5 == own' own="$owner" | sort -k$column
}
if [ -n "$output" ]; then
do_work >out.txt
else
do_work
fi
答案 1 :(得分:1)
您可以使用shell的“使用默认值”选项(${variable:-default}
,默认使用/ dev / stdout)来执行此操作:
ls -lisa | awk '$5 == own' own="$owner" | sort -k$column -n > "${output:-/dev/stdout}"