我写了一个 bash 脚本,稍后需要做一些事情。它被称为这样的东西:
later mv *.log /somewhere/else
但是,当这样*.log
调用时,在调用时会扩展,并且调用脚本就像我写的一样
later mv 1.log 2.log 3.log /somewhere/else
我试图让我的脚本稍后扩展通配符。我试着这样称呼它
later mv '*.log' /somewhere/else
还有\*
, 但这些都导致通配符根本没有得到扩展。
如何在命令行中扩展通配符?有没有办法在调用脚本时防止扩展,即在输入时获取原始参数?
这是我的脚本的一部分,用于为以后的调用做准备:
tmpfile=$(mktemp)
### Get a quoted commandline
line=
while (( "$#" > 0 )); do
line="$line\"$1\" "
shift
done
### Prepare a script to be run
echo '#!/bin/bash' > "$tmpfile"
echo "cd $(pwd)" >> "$tmpfile"
echo "trap 'rm \"$tmpfile\"' EXIT" >> "$tmpfile"
echo "$line" >> "$tmpfile"
chmod 777 "$tmpfile"
请注意,我必须引用命令行,因为我的一些文件和文件夹的名称中有空格;如果我删除引用位,即使没有通配符的位也会停止工作。