我编写了一个示例脚本来拆分字符串,但它没有按预期工作
#!/bin/bash
IN="One-XX-X-17.0.0"
IFS='-' read -r -a ADDR <<< "$IN"
for i in "${ADDR[@]}"; do
echo "Element:$i"
done
#split 17.0.0 into NUM
IFS='.' read -a array <<<${ADDR[3]};
for element in "${array[@]}"
do
echo "Num:$element"
done
Run Code Online (Sandbox Code Playgroud)
输出
One
XX
X
17.0.0
17 0 0
Run Code Online (Sandbox Code Playgroud)
但我预计输出是:
One
XX
X
17.0.0
17
0
0
Run Code Online (Sandbox Code Playgroud) 我对以下文件进行了tar'd和zip'd处理:
/opt/abc/xyz/abc.xml
Run Code Online (Sandbox Code Playgroud)
到:
/tmp/backup/abc.xml.tar.gz
Run Code Online (Sandbox Code Playgroud)
我试图解压并解压缩到/opt/abc/xyz/(same path)目录。
我遇到了以下命令。我以root用户身份执行它,但没有发现任何错误或输出。我期待下面的命令将提取abc.xml的 abc.xml.tar.gz和重命名为abc.xml_v9。
tar --force-local --transform='s/abc.xml/abc.xml_v9/' -zxpsf /tmp/backup/abc.xml.tar.gz -C /
Run Code Online (Sandbox Code Playgroud)
输出应该是
/opt/abc/xyz/abc.xml_v9
Run Code Online (Sandbox Code Playgroud)
tar 的手册页说以下信息
File name transformations:
--transform=EXPRESSION, --xform=EXPRESSION
use sed replace EXPRESSION to transform file names
File name matching options (affect both exclude and include patterns):
Run Code Online (Sandbox Code Playgroud)
有人可以通过一些示例帮助我理解上述命令吗?