Is можно написать сценарий ./inplace
оболочки, которая работает как следующим образом:"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
Update:
Это работает (после ответа от Томаса Дики)
#!/bin/sh
for last; do true; done
"[email protected]" > 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
#