将文件作为函数的输入 - Posix shell 脚本
Take file as input to function - Posix shell script
我正在 Posix shell 脚本中编写一个函数,如果 env 变量设置为 true,则压缩文件,然后将该文件推送到远程位置。我如何将任意数量的要压缩的文件作为参数传递给函数,而不是仅仅压缩一个全局文件?下面是我的代码:
CODE:
#!/bin/sh
COMPRESSION=true
FILE="test.json"
LOG_FILE="test.log"
compress_file() {
gzip $FILE
stat $FILE.gz
if [ $? -eq 0 ]; then
FILE=$FILE.gz
else
FILE=$FILE
fi
}
push_file() {
FILE=
cmd() {
STORAGE_URL="https://somepath"
TIMESTAMP=$(date -u '+%a, %d %b %Y %T GMT')
if [ "$COMPRESSION" = true ]; then
compress_file
CONTENT_TYPE="'content-type: application/gzip'"
else
CONTENT_TYPE="'content-type: application/json'"
fi
curl --fail --silent --show-error -X PUT -T $FILE -H $CONTENT_TYPE -H 'x-ms-version: 2020-02-10' -H "x-ms-date: $TIMESTAMP" "$STORAGE_URL"
}
}
push_file()
举例来说,我想同时压缩 $FILE
和 $LOG_FILE
,或者一个而不压缩另一个。或者,任意数量的文件。
您将停止使用全局变量
compress_file() {
local file
for file in "$@"; do
gzip "$file"
done
}
并像
一样调用函数
compress_file "$FILE" "$LOG_FILE"
函数的所有参数(又名位置参数)都位于 "$@"
类数组变量中
我正在 Posix shell 脚本中编写一个函数,如果 env 变量设置为 true,则压缩文件,然后将该文件推送到远程位置。我如何将任意数量的要压缩的文件作为参数传递给函数,而不是仅仅压缩一个全局文件?下面是我的代码:
CODE:
#!/bin/sh
COMPRESSION=true
FILE="test.json"
LOG_FILE="test.log"
compress_file() {
gzip $FILE
stat $FILE.gz
if [ $? -eq 0 ]; then
FILE=$FILE.gz
else
FILE=$FILE
fi
}
push_file() {
FILE=
cmd() {
STORAGE_URL="https://somepath"
TIMESTAMP=$(date -u '+%a, %d %b %Y %T GMT')
if [ "$COMPRESSION" = true ]; then
compress_file
CONTENT_TYPE="'content-type: application/gzip'"
else
CONTENT_TYPE="'content-type: application/json'"
fi
curl --fail --silent --show-error -X PUT -T $FILE -H $CONTENT_TYPE -H 'x-ms-version: 2020-02-10' -H "x-ms-date: $TIMESTAMP" "$STORAGE_URL"
}
}
push_file()
举例来说,我想同时压缩 $FILE
和 $LOG_FILE
,或者一个而不压缩另一个。或者,任意数量的文件。
您将停止使用全局变量
compress_file() {
local file
for file in "$@"; do
gzip "$file"
done
}
并像
一样调用函数compress_file "$FILE" "$LOG_FILE"
函数的所有参数(又名位置参数)都位于 "$@"
类数组变量中