热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

shell(7)用户交互.doc

命令行参数,positionalparameter$0完整程序名(basename命令可去掉路径)$1第一个参数,超出9时${10}$#参

命令行参数, positional parameter

$0 完整程序名 (basename 命令可去掉路径 )

$1 第一个参数,超出 9 ${10}

$# 参数个数

$* 命令行中的所有参数,作为一个单词

$@ 命令行中的所有参数,作为多个单词

$$ 当前 shell PID

$- shell 的一些属性

$! 前一个后台进程的 PID

 

echo `basename $0`              # 获得程序名

echo ${!#}                    # 获得最后一个参数

for((i=1; i<=$#; ++i)); do   # 遍历参数

    echo ${!i}                     #{} 中不能用 $ ,可使用 ! 替代

done

for a in $@; do                    # 另一种遍历的方法, $@ 换成 $* 也可以

    echo $a

done

 

shift 命令

改变命令行参数的相对位置,默认左移 1 位,即 $3 变成 $2 $2 变成 $1 $1 被丢弃

eg: 另一种遍历参数的方法

while [ -n "$1" ]; do

    echo $1

    shift

done

 

getopts 分析参数

 

read ,获取用户输入

read                     # 读入到变量 $REPLY

read name              # 读入到 name

read -p "input your name:" name          # 带提示的 read

read name age             # 读入以空格分隔的多个变量

read -t 5 name             # 等待 5 秒,超时返回失败

if read -t 5 name, then

read -n1 -p "input [Y/N]" answer

# 设置读入的字符数——读入一个字符,这样无须回车,在 emacs 下失败,但终端可以

read -s -p "input pwd" pwd          # 不显示输入, emacs 下失败,但普通终端可以

 

read ,读入文件

一次读入 1 行,不能直接以文件名为参数,需要使用 cat 等命令

cat a.txt | while read line      #read 重定向的一个应用吧?

do

       echo $line

done

 

输出

printf "format" a1 a2 ...

eg: printf "af 0x%x" 11               # 格式控制符同 c

 


推荐阅读
author-avatar
Wi俏娃寒躯
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有