深入探索Shell:输入输出、文件操作与命令评估
1. printf命令详解
在使用 printf 命令时,若字符为单引号或双引号,对应数值为字符串第二个字符的ASCII值,示例如下:
$ printf "%s is %d\n" a "'a"
a is 97
当参数数量多于格式说明符时,格式说明符会按需重复使用,这在参数列表长度未知(如通配符表达式)时很方便。若格式字符串中的说明符多于参数,数值转换时缺失值视为零,字符串转换时视为空字符串,但最好确保参数数量与格式字符串期望的一致。若 printf 无法执行格式转换,将返回非零退出状态。
2. 波浪号扩展与通配符
2.1 波浪号扩展
若命令行字符串首字符为波浪号( ~ ),或者变量赋值(如 PATH 或 CDPATH 变量)值中未加引号的冒号后的首字符为波浪号,shell会执行波浪号扩展。其目的是将用户主目录的符号表示替换为实际路径,用户可显式或隐式指定,隐式时为当前运行程序的用户。例如:
$ vi ~/.profile # 等同于 vi $HOME/.profile
$ vi ~tolstoy/.profile # 编辑用户tolstoy的.profile文件
波浪号扩展最早出现在Berkeley C shell(csh)
Shell输入输出与命令评估
超级会员免费看
订阅专栏 解锁全文
329

被折叠的 条评论
为什么被折叠?



