$output
我正在尝试创建一个 shell 脚本,事实是,如果变量已填充,我想更改输出。我正在考虑使用if
命令内部的变量检查变量,但我不知道它是否是正确的语法。这是一个例子(当然这不起作用):
ls -丽莎 | awk '$5 == own' own="$owner" | 排序 -k$column -n if [ $output ]; 然后打印 > out.txt fi
我不知道它是否会以这种方式工作以及是否可能。
内置的 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
您可以使用 shell 的“使用默认值”选项(${variable:-default}
,以 /dev/stdout 作为默认值)来执行此操作:
ls -lisa | awk '$5 == own' own="$owner" | sort -k$column -n > "${output:-/dev/stdout}"