一个脚本,可以根据参数文件名,以正确的参数调用tar来解压缩tar.gz或tar.bz2文件
2007-04-10 15:12
357 查看
写一个脚本,可以根据参数文件名,以正确的参数调用tar来解压缩tar.gz或tar.bz2文件。
#!/bin/sh
case ${1##*.tar.} in
bz2)
tar jxvf $1
;;
gz)
tar zxvf $1
;;
*)
echo "wrong file type"
esac
下面是自己写的一个远程登录后自动解压CODE(WINDOWS远程登录LINUX)
1。首选配置好自动远程登录(用公钥和密钥)
2。
#!/bin/sh
DIRE=/opt/van/43A
cd $DIRE
ls -l $DIRE|awk '{if($9~/tar.gz|zip/) print $9} '>/tmp/b
while read EOF
#cat /tmp/b | while read EOF
#ls -l |while read EOF
do
case ${EOF##*.} in #####${}详解语法http://bbs.chinaunix.net/viewthread.php?tid=218853&extra=&page=7
gz)
tar zxvf $EOF
;;
zip)
unzip -o $EOF
;;
# *)
# echo "error"
# ;;
esac
done </tmp/b
rm -f /tmp/b
#### 为了完整起見,我这里再用一些例子加以说明 ${ } 的一些特别功能:
假设我们定义了一个变量为:
file=/dir1/dir2/dir3/my.file.txt
我们可以用 ${ } 分別替换获得不同的值:
${file#*/}:拿掉第一条 / 及其左边的字串:dir1/dir2/dir3/my.file.txt
${file##*/}:拿掉最后一条 / 及其左边的字串:my.file.txt
${file#*.}:拿掉第一个 . 及其左
边
的字串:file.txt
${file##*.}:拿掉最
后
一
个
. 及其左
边
的字串:txt
${file%/*}:拿掉最
后
条
/ 及其右
边
的字串:/dir1/dir2/dir3
${file%%/*}:拿掉第一
条
/ 及其右
边
的字串:(空值)
${file%.*}:拿掉最後一
个
. 及其右
边
的字串:/dir1/dir2/dir3/my.file
${file%%.*}:拿掉第一
个
. 及其右
边
的字串:/dir1/dir2/dir3/my
記憶的方法為:
[list]# 是去掉左邊(在鑑盤上 # 在 $ 之左邊)
% 是去掉右邊(在鑑盤上 % 在 $ 之右邊)
單一符號是最小匹配﹔兩個符號是最大匹配。[/list]
${file:0:5}:提取最左邊的 5 個字節:/dir1
${file:5:5}:提取第 5 個字節右邊的連續 5 個字節:/dir2
我們也可以對變量值裡的字串作替換:
${file/dir/path}:將第一個 dir 提換為 path:/path1/dir2/dir3/my.file.txt
${file//dir/path}:將全部 dir 提換為 path:/path1/path2/path3/my.file.txt
利用 ${ } 還可針對不同的變數狀態賦值(沒設定、空值、非空值):
${file-my.file.txt} :假如 $file 沒有設定,則使用 my.file.txt 作傳回值。(空值及非空值時不作處理)
${file:-my.file.txt} :假如 $file 沒有設定或為空值,則使用 my.file.txt 作傳回值。 (非空值時不作處理)
${file+my.file.txt} :假如 $file 設為空值或非空值,均使用 my.file.txt 作傳回值。(沒設定時不作處理)
${file:+my.file.txt} :若 $file 為非空值,則使用 my.file.txt 作傳回值。 (沒設定及空值時不作處理)
${file=my.file.txt} :若 $file 沒設定,則使用 my.file.txt 作傳回值,同時將 $file 賦值為 my.file.txt 。 (空值及非空值時不作處理)
${file:=my.file.txt} :若 $file 沒設定或為空值,則使用 my.file.txt 作傳回值,同時將 $file 賦值為 my.file.txt 。 (非空值時不作處理)
${file?my.file.txt} :若 $file 沒設定,則將 my.file.txt 輸出至 STDERR。 (空值及非空值時不作處理)
${file:?my.file.txt} :若 $file 沒設定或為空值,則將 my.file.txt 輸出至 STDERR。 (非空值時不作處理)
#!/bin/sh
case ${1##*.tar.} in
bz2)
tar jxvf $1
;;
gz)
tar zxvf $1
;;
*)
echo "wrong file type"
esac
下面是自己写的一个远程登录后自动解压CODE(WINDOWS远程登录LINUX)
1。首选配置好自动远程登录(用公钥和密钥)
2。
#!/bin/sh
DIRE=/opt/van/43A
cd $DIRE
ls -l $DIRE|awk '{if($9~/tar.gz|zip/) print $9} '>/tmp/b
while read EOF
#cat /tmp/b | while read EOF
#ls -l |while read EOF
do
case ${EOF##*.} in #####${}详解语法http://bbs.chinaunix.net/viewthread.php?tid=218853&extra=&page=7
gz)
tar zxvf $EOF
;;
zip)
unzip -o $EOF
;;
# *)
# echo "error"
# ;;
esac
done </tmp/b
rm -f /tmp/b
#### 为了完整起見,我这里再用一些例子加以说明 ${ } 的一些特别功能:
假设我们定义了一个变量为:
file=/dir1/dir2/dir3/my.file.txt
我们可以用 ${ } 分別替换获得不同的值:
${file#*/}:拿掉第一条 / 及其左边的字串:dir1/dir2/dir3/my.file.txt
${file##*/}:拿掉最后一条 / 及其左边的字串:my.file.txt
${file#*.}:拿掉第一个 . 及其左
边
的字串:file.txt
${file##*.}:拿掉最
后
一
个
. 及其左
边
的字串:txt
${file%/*}:拿掉最
后
条
/ 及其右
边
的字串:/dir1/dir2/dir3
${file%%/*}:拿掉第一
条
/ 及其右
边
的字串:(空值)
${file%.*}:拿掉最後一
个
. 及其右
边
的字串:/dir1/dir2/dir3/my.file
${file%%.*}:拿掉第一
个
. 及其右
边
的字串:/dir1/dir2/dir3/my
記憶的方法為:
[list]# 是去掉左邊(在鑑盤上 # 在 $ 之左邊)
% 是去掉右邊(在鑑盤上 % 在 $ 之右邊)
單一符號是最小匹配﹔兩個符號是最大匹配。[/list]
${file:0:5}:提取最左邊的 5 個字節:/dir1
${file:5:5}:提取第 5 個字節右邊的連續 5 個字節:/dir2
我們也可以對變量值裡的字串作替換:
${file/dir/path}:將第一個 dir 提換為 path:/path1/dir2/dir3/my.file.txt
${file//dir/path}:將全部 dir 提換為 path:/path1/path2/path3/my.file.txt
利用 ${ } 還可針對不同的變數狀態賦值(沒設定、空值、非空值):
${file-my.file.txt} :假如 $file 沒有設定,則使用 my.file.txt 作傳回值。(空值及非空值時不作處理)
${file:-my.file.txt} :假如 $file 沒有設定或為空值,則使用 my.file.txt 作傳回值。 (非空值時不作處理)
${file+my.file.txt} :假如 $file 設為空值或非空值,均使用 my.file.txt 作傳回值。(沒設定時不作處理)
${file:+my.file.txt} :若 $file 為非空值,則使用 my.file.txt 作傳回值。 (沒設定及空值時不作處理)
${file=my.file.txt} :若 $file 沒設定,則使用 my.file.txt 作傳回值,同時將 $file 賦值為 my.file.txt 。 (空值及非空值時不作處理)
${file:=my.file.txt} :若 $file 沒設定或為空值,則使用 my.file.txt 作傳回值,同時將 $file 賦值為 my.file.txt 。 (非空值時不作處理)
${file?my.file.txt} :若 $file 沒設定,則將 my.file.txt 輸出至 STDERR。 (空值及非空值時不作處理)
${file:?my.file.txt} :若 $file 沒設定或為空值,則將 my.file.txt 輸出至 STDERR。 (非空值時不作處理)
相关文章推荐
- 《Advanced Bash-scripting Guide》学习(二):测试脚本调用的参数是否正确
- 使用autoconf、automake等来制作一个以源代码形式(.tar.gz)发布的软件、并可在执行configure时使用自定义参数
- ubuntu下解压缩zip,tar,tar.gz和tar.bz2文件
- Ubuntu下如何解压缩zip,tar,tar.gz,tar.bz2文件
- 请定义一个函数quadratic(a, b, c),接收3个参数,返回一元二次方程: ax2 + bx + c = 0 的两个解。 提示:计算平方根可以调用math.sqrt()函数:
- 【C语言】写一个函数,只要调用一次就可以将参数的值,增加1。
- ubuntu下解压缩zip,tar,tar.gz和tar.bz2文件
- tar一些参数和一个打包脚本
- windows 下压缩 tar.gz ,linux下也可以解压缩
- servlet都有一个servletConfig对象;四个config对象可以调用的方法;ServletContext对象之获取web项目信息;设置全局初始化参数的配置
- Jquery自定义一个带名称的、可以传参数的函数以及setTimeout延迟调用,用法详解
- 根据URL获取参数值得出json结果集,对外给一个接口让别人调用
- Ubuntu下如何解压缩zip,tar,tar.gz,tar.bz2文件
- 一个简单的压缩成tar.gz文件的shell脚本
- 本文教你如何使用autoconf、automake等来制作一个以源代码形式(.tar.gz)发布的软件、并可在执行configure时使用自定义参数。
- 【转】ubuntu下解压缩zip,tar,tar.gz和tar.bz2文件
- 写一个脚本checkipadd.sh,判断所输入的参数是否为正确的IP地址,如 果是就输出"This is ip address";如果不是就输出"This is not ip address" (1
- Ubuntu下如何解压缩zip,tar,tar.gz,tar.bz2文件
- 测试脚本被调用的参数数量是否正确
- 当一个对象实例作为一个参数被传递到方法中时,参数的值就是对该对象的引用。对象的内容可以在被调用的方法中改变,但对象的引用是永远不会改变的.