" $ BIN"' / TEMP-得到'
#!/bin/bash
OPTIONS=''
function help {
{
echo 'temp-get $NAME?'
echo ' -> get the temp directories with the prefix'
echo '( if multiple directories with prefix exist '
echo ' they will be returned in reverse chronological '
echo ' order )'
} >&2
}
OPTIONS=''
__DIRNAME=$(
SOURCE="${BASH_SOURCE[0]}"
while [ -h "$SOURCE" ];do
__DIRNAME="$(builtin cd -P "$(dirname "$SOURCE")" && pwd)"
SOURCE="$(readlink "$SOURCE")"
[[ "$SOURCE" != /* ]] && SOURCE="$__DIRNAME/$SOURCE"
done
echo "$( builtin cd -P "$( dirname "$SOURCE")" && pwd )"
)
source "$__DIRNAME"'/_config_'
OPTERR=1
(( ${#flags} )) && {
while getopts $OPTIONS opt ${flags[@]}; do
case $opt in
-)
case "${OPTARG}" in
*)
echo 'Invalid long option: -'"$opt$OPTARG" >&2
help
exit 1
;;
esac
;;
h)
help
exit 1
;;
\?)
echo 'Invalid option: '"$OPTARG" >&2
help
exit 1
;;
esac
done
}
OPTIND=0;unset OPTARG
set -o pipefail
[ -n "${1-}" ] && {
echo "$PATH_TO_TEMP"'/'*'-'"$1" | tr ' ' '\n' | sort -r
} || {
echo "$PATH_TO_TEMP"'/'* | tr ' ' '\n' | sort -r
}
exit $?
危险的cmd
list=( "`"$BIN"'/temp-get' "${1-}"`" )
for dir in ${list[@]} ; do
echo $dir
echo --
done;
恶意文件夹
mkdir "`echo -e 'got\nyou'`"
我特别不确定在解析temp-get的输出或在危险命令中处理这个问题。理想情况下,我想将这个错误的文件名称视为没有任何问题(技术上没什么)。
答案 0 :(得分:4)
免责声明:最佳方式通常是使用不同的编程语言 - 遗憾的是handling arbitrary filenames in Bash过于复杂。
在您的特定情况下,您可以处理的仅位置在temp-get
- 必须输出NUL分隔的文件名列表才能够处理父脚本中的任意文件名。任何其他分隔符都可以是路径的一部分。然后父脚本可以循环遍历该输出,而不是将其放入数组中,而是将其传递给while IFS= read -r -d''
。