linux sh : 整理一些细节
发布日期:2021-06-30 22:17:29 浏览次数:2 分类:技术文章

本文共 1996 字,大约阅读时间需要 6 分钟。

前言

浏览了一篇讲shell编程的资料。

边看边查资料边实验,学到了一些以前不清楚或不知道的知识点。
e.g.
* linux命令帮助的本地查法 help -m , 以前用man 和info查不到,就得上网去查。这个解决能解决很多问题,上网去查出的资料,如果人家不带例子,还不如本地的帮助好。
* 在脚本中变量的正规用法 ${my_var}
* declare的几种有用的参数
* ‘’和“”的区别。以前我总是用”“.

实验

# !/bin/bash# @file shell_basic_01.sh# @brief 整理一些未注意到的细节# 查看linux命令的帮助(总有一个能看到命令的帮助)# man the_cmd# info the_cmd # e.g. info wc# help -m the_cmd # e.g. help -m declare# 将一个目录中的所有文件(遍历)权限都改成一样的# chmod -R 775 ./shell_basic/# export的用法 e.g. export MY_PRJ_NAME="my_project"# 查看环境变量(包括用export导出的变量)# typeset | grep -i "the_keyword_on_OS_env"# declare | grep -i "the_keyword_on_OS_env"# declare的用法# declare: usage: declare [-aAfFilrtux] [-p] [name[=value] ...]# https://ss64.com/bash/declare.html# help -m declare# 觉得有用的几个declare选项# declare -a 数组# declare -f 函数# declare -i 整数# declare -r 只读# prog infodeclare -r g_str_prog_name="shell_basic_01"declare -r g_str_prog_ver="1.0.0.1"declare -r g_str_prog_time="2018-04-16 13:27"# error codedeclare -i MY_RC_OK=0declare -i MY_RC_ERR=1# sh脚本函数是没有前向声明的, declare -f fn_xx 不好使(虽然不报错)# 为了防止调用到后面调用的函数, 将要执行的主代码放到脚本的最后面# 这样就不会出现调用到后面定义的函数的问题function fn_main() {    fn_init    fn_test_case    echo "END"    return ${MY_RC_OK}}function fn_init() {    clear    # 正规的使用变量的例子 e.g. ${g_str_prog_name}    # 好处,可以防止bash分不清变量值和后面非变量字符, 等于是用{}显势指定变量名称,不用bash去猜了    echo "[${g_str_prog_name}][${g_str_prog_ver}][${g_str_prog_time}]"    return ${MY_RC_OK}}function fn_test_case() {    declare ftype    # wc --files0-from=F    #   从F文件中读取文件名作为输入文件。如果F为"-",则从标准输入中读取文件名    # 从当前目录下的.c和.h文件中取行的最大长度 e.g. 154 总用量    find . -name '*.[ch]' -print0 | wc -L --files0-from=- | tail -n1    # sed 用于查找替换字符串    # awk 用来提取和打印行中的字段(分隔符可自定义)    ftype=$(file './test.tar')    # '', 不允许变量扩展    # "", 允许变量扩展    echo "ftype = [${ftype}]"    echo -e 'ftype = [${ftype}]'    echo 'ftype = [${ftype}]'    printf 'printf : ftype = [${ftype}]\n'    printf 'printf : ftype = [%s]\n' "${ftype}"    # 在格式化字符串中,还是用''围住字符串较好    # 如果是原样照印, 使用echo    # 如果不是原样照印, 使用printf + '\n'}fn_mainexit 0

转载地址:https://lostspeed.blog.csdn.net/article/details/79962943 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:OCI : ORA-01405: 提取的列值为 NULL
下一篇:LFS : 制作分区和挂载分区

发表评论

最新留言

网站不错 人气很旺了 加油
[***.192.178.218]2024年04月25日 06时58分41秒