shell命令的“inplace”包装器

时间:2015-08-13 07:38:04

标签: shell unix awk sed

是否可以编写一个shell脚本./inplace 如下:

./inplace arg1 arg2 [..] argn

应该等同于序列:

arg1 arg2 [..] argn > tmp.file
mv tmp.file argn

有三个论点:

./inplace arg1 arg2 arg3

应该是

arg1 arg2 arg3 > tmp.file
mv tmp.file arg3

对于涉及$1的参数的案例,我的尝试失败了。对于 示例

 ./inplace awk '{print $1}' file.txt

更新

这是有效的(根据Thomas Dickey的回答)

#!/bin/sh

for last; do true; done

"$@" > tmp.file
mv tmp.file "${last}"

# Examples:
#
# seq 20 > test.txt
# ./inplace.sh head test.txt
# cat test.txt
#
# seq 20 > test.txt
# ./inplace.sh awk '{print $1^2}' test.txt
# cat test.txt
#
# seq 20 > test.txt
# ./inplace.sh awk -v line="with spaces:" '{print line, $1}' test.txt
# cat test.txt
#

1 个答案:

答案 0 :(得分:2)

可能问题是缺乏引用。如果您在app.get("/deletebookData", function (req, response) { console.log(req.body); }); 脚本(而不是"$@")中使用特殊参数inplace,则会引用所有参数。