ref:http://www.runoob.com/linux/linux-shell-passing-arguments.html

Shell 传递参数

我们可以在执行 Shell 脚本时,向脚本传递参数,脚本内获取参数的格式为:$nn 代表一个数字,1 为执行脚本的第一个参数,2 为执行脚本的第二个参数,以此类推……

实例

以下实例我们向脚本传递三个参数,并分别输出,其中 $0 为执行的文件名:

#!/bin/bash
# author:菜鸟教程
# url:www.runoob.com

echo "Shell 传递参数实例!";
echo "执行的文件名:$0";
echo "第一个参数为:$1";
echo "第二个参数为:$2";
echo "第三个参数为:$3";

为脚本设置可执行权限,并执行脚本,输出结果如下所示:

$ chmod +x test.sh 
$ ./test.sh 1 2 3
Shell 传递参数实例!
执行的文件名:./test.sh
第一个参数为:1
第二个参数为:2
第三个参数为:3

 

参数处理说明
$# 传递到脚本的参数个数
$* 以一个单字符串显示所有向脚本传递的参数。
如"$*"用「"」括起来的情况、以"$1 $2 … $n"的形式输出所有参数。
$$ 脚本运行的当前进程ID号
$! 后台运行的最后一个进程的ID号
$@ 与$*相同,但是使用时加引号,并在引号中返回每个参数。
如"$@"用「"」括起来的情况、以"$1" "$2" … "$n" 的形式输出所有参数。
$- 显示Shell使用的当前选项,与set命令功能相同。
$? 显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误。
1> /dev/null 表示将命令的标准输出重定向到 /dev/null
2>/dev/null 表示将命令的错误输出重定向到 /dev/null
-------------------------------------------------------------------------

shell-exec

exec 3<>hello.txt # 以读写方式绑定到文件描述符"3"

echo "hello exec" >&3 # 写入"hello exec",如果之前有内容,这里将会从文件开头进行覆盖

echo "hello world" >>&3 # 写入"hello world“,新的一行!

exec 3>&- # 关闭写,禁止写,然而,实际上它也不能读了~

# 如果是exec 3<&-,关闭读,同时它也不能写了~

------------------------------------------------------------------------------------------------

#!/bin/bash
echo -n "Enter your name:"  //参数-n的作用是不换行,echo默认是换行
read name                  //从键盘输入

 

ref:https://blog.csdn.net/fly542/article/details/7108037

  • 今天看到有个目录的权限是rwxrwxrwt 很惊讶这个t是什么,这个t代表是所谓的sticky bit。
  • sticky bit: 该位可以理解为防删除位. 一个文件是否可以被某用户删除, 主要取决于该文件所属的组是否对该用户具有写权限. 如果没有写权限, 则这个目录下的所有文件都不能被删除, 同时也不能添加新的文件. 如果希望用户能够添加文件但同时不能删除文件, 则可以对文件使用sticky bit位. 设置该位后, 就算用户对目录具有写权限, 也不能删除该文件.

要删除一个文件,你不一定要有这个文件的写权限,但你一定要有这个文件的上级目录的写权限。也就是说,你即使没有一个文件的写权限,但你有这个文件的上级目录的写权限,你也可以把这个文件给删除,而如果没有一个目录的写权限,也就不能在这个目录下创建文件。如何才能使一个目录既可以让任何用户写入文件,又不让用户删除这个目录下他人的文件,sticky就是能起到这个作用。stciky一般只用在目录上,用在文件上起不到什么作用。

在一个目录上设了sticky位后,(如/home,权限为1777)所有的用户都可以在这个目录下创建文件,但只能删除自己创建的文件(root除外),这就对所有用户能写的目录下的用户文件启到了保护的作用。

可以通过chmod o+t tmp 来设置tmp目录的sticky bit,而且/tmp目录默认是设置了这个位的。

linux shell中参数执行问题

下面有一段程序a.sh,其内容为

#!/bin/bash
$1;执行pwd命令
"$1"//执行pwd命令,与“"无关
echo $1//打印$1内容
echo "$1"//打印$1内容

执行命令:./a "pwd",注意在java exec时参数是带引号,而不是./a pwd,这相当于两天命令。若需要参数执行命令,则必须作为命令放在首位置。

 linux更改文件owner,group

ref:https://www.cnblogs.com/zhihaowu/p/8810686.html

1.linux下修改文件用户组
chgrp: change group的简写,修改文件所属的用户组。
chgrp users test.log
修改后查看 ls -l
-rwxrwx--- 1 work users 0 Jun 8 15:46 test.log
如果要修改该目录下所有文件和目录,使用-R参数。
chgrp -R users test
要被改变的group名,必须在 /etc/group 文件中。 /etc/group文件记录系统中所有的组名称。

2.linux下修改文件所有者
chown :change owner的简写, 修改文件的所有者。
chown [-R] 账号名称 文件或目录
-R 递归,将子目录下文件全部修改。
将文件所有者修改bin
chown bin test.log
修改的用户必须在/etc/passwd文件中 /etc/passwd记录用户信息。
chown还可以修改组名称
chown root:root test.log
将所有者和组名称都修改为root。

posted on 2018-07-11 15:41  studyskill  阅读(130)  评论(0编辑  收藏  举报