小妹刚开始学习shell scripting. 请高手看看,这条语句是什么意思?
TESTDIR=$(echo ${0%/*}|sed "s#\.#`pwd`#")
先谢了。
请高手看看,这条语句是什么意思?
-
- 帖子: 4
- 注册时间: 2013-09-24 11:12
- 系统: Windows 7
- eexpress
- 帖子: 58428
- 注册时间: 2005-08-14 21:55
- 来自: 长沙
Re: 请高手看看,这条语句是什么意思?
$() 就是计算
$0就是当前shell
%是去掉字符串的尾巴
|是管道
sed是替换
自己想
证明下你是小妹先
btw 这句估计是小白写的,小妹另外找个师傅吧。
$0就是当前shell
%是去掉字符串的尾巴
|是管道
sed是替换
自己想
证明下你是小妹先
btw 这句估计是小白写的,小妹另外找个师傅吧。
● 鸣学
-
- 帖子: 4
- 注册时间: 2013-09-24 11:12
- 系统: Windows 7
Re: 请高手看看,这条语句是什么意思?
谢谢eexpress 的回答。
语句大概的内容我猜得出来,但是我想知道确切的意思。
${0} 是正在被执行的命令的名字,也就是shell, 那么 ${0%/*} 是什么意思?我查了几本书都没有答案。
sed "s" 做替换我知道, 但是 sed "s#\.#`pwd`#" 是把什么替换成什么了? 这里 #是什么意思。
谢谢了。
语句大概的内容我猜得出来,但是我想知道确切的意思。
${0} 是正在被执行的命令的名字,也就是shell, 那么 ${0%/*} 是什么意思?我查了几本书都没有答案。
sed "s" 做替换我知道, 但是 sed "s#\.#`pwd`#" 是把什么替换成什么了? 这里 #是什么意思。
谢谢了。
- lxf1992521
- 帖子: 240
- 注册时间: 2011-06-26 18:28
- 联系:
Re: 请高手看看,这条语句是什么意思?
这是什么命令啊,太乱了吧。
${0%/*} :我估计他是想就提取当前脚本的文件名。但是$0已经是啦!
${0%/*} :我估计他是想就提取当前脚本的文件名。但是$0已经是啦!
http://www.linux-unix.asia
720P电影,无损音乐,Linux教程资料:http://hdcity.leniter.org/promotionlink ... e838745c67
720P电影,无损音乐,Linux教程资料:http://hdcity.leniter.org/promotionlink ... e838745c67
-
- 论坛版主
- 帖子: 5369
- 注册时间: 2007-01-14 16:23
Re: 请高手看看,这条语句是什么意思?
同ee的问题,证明你是小妹先七彩虹 写了:谢谢eexpress 的回答。
语句大概的内容我猜得出来,但是我想知道确切的意思。
${0} 是正在被执行的命令的名字,也就是shell, 那么 ${0%/*} 是什么意思?我查了几本书都没有答案。
sed "s" 做替换我知道, 但是 sed "s#\.#`pwd`#" 是把什么替换成什么了? 这里 #是什么意思。
谢谢了。
shell被转的晕晕的
只好回答下sed的问题,sed "s#\.#`pwd`#"是把\.换成pwd的输出,#是定界符,缺省是/的,随便用sed认可的定界符就好了,这边只是为了好认而已吧
\.是把.转义,这只是为了让.表示当前目录本身
#include <stdio.h>
void main()
{
double world;
unsigned letter;
short stay;
long memories;
printf("I miss you.\n");
}
void main()
{
double world;
unsigned letter;
short stay;
long memories;
printf("I miss you.\n");
}
-
- 帖子: 4
- 注册时间: 2013-09-24 11:12
- 系统: Windows 7
Re: 请高手看看,这条语句是什么意思?
谢谢onlylove的回答。我明白sed 的意思了, 只是还是不明白 ${0%/*}在做什么。
%/* 应该是把右边的字符串满足pattern /* 的都删了。但是为什么要跟${0} 放在一起?
%/* 应该是把右边的字符串满足pattern /* 的都删了。但是为什么要跟${0} 放在一起?
- eexpress
- 帖子: 58428
- 注册时间: 2005-08-14 21:55
- 来自: 长沙
- lilydjwg
- 论坛版主
- 帖子: 4258
- 注册时间: 2009-04-11 23:46
- 系统: Arch Linux
- 联系:
Re: 请高手看看,这条语句是什么意思?
bash 的变量替换语法是这样子的。七彩虹 写了:谢谢onlylove的回答。我明白sed 的意思了, 只是还是不明白 ${0%/*}在做什么。
%/* 应该是把右边的字符串满足pattern /* 的都删了。但是为什么要跟${0} 放在一起?
0 是被替换的变量名,% 从右边开始匹配,尽量少匹配,/* 你已经知道啦。%% 是从右边匹配,但是尽量多匹配;# 和 ## 从左边开始。