shell脚本变量定义注意别跟系统变量重名了……

写了个很简单的脚本,执行结果却很奇怪。

  1 #!/bin/bash
  2
  3 PATH=$HOME/vlc_transplant4
  4
  5 rm -f $PATH/vlc
  6 ln -s $PATH/bin/vlc-static $PATH/vlc

执行结果:

[email protected]:~/vlc_transplant4$ ./update.sh
./update.sh: 行 5: rm: 未找到命令
./update.sh: 行 6: ln: 未找到命令

原因是自己在脚本中定义的PATH变量把系统变量PATH给替代了,脚本原本根据系统变量PATH找命令(rm、ln),现在PATH在脚本中被重新定义成$HOME/vlc_transplant4,脚本优先用这个定义了。

把脚本中的PATH名字改改就可以了。

  1 #!/bin/bash
  2
  3 _PATH=$HOME/vlc_transplant4
  4
  5 rm -f $_PATH/vlc
  6 ln -s $_PATH/bin/vlc-static $_PATH/vlc
时间: 2024-10-29 11:14:00

shell脚本变量定义注意别跟系统变量重名了……的相关文章

linux shell自定义函数(定义、返回值、变量作用域)介绍

http://www.jb51.net/article/33899.htm linux shell自定义函数(定义.返回值.变量作用域)介绍 linux shell 可以用户定义函数,然后在shell脚本中可以随便调用.下面说说它的定义方法,以及调用需要注意那些事项. 一.定义shell函数(define function) 语法: [ function ] funname [()] { action; [return int;] } 说明: 1.可以带function fun() 定义,也可以

转 linux shell自定义函数(定义、返回值、变量作用域)介绍

linux shell 可以用户定义函数,然后在shell脚本中可以随便调用.下面说说它的定义方法,以及调用需要注意那些事项. 一.定义shell函数(define function) 语法: [ function ] funname [()] { action; [return int;] } 说明: 1.可以带function fun() 定义,也可以直接fun() 定义,不带任何参数. 2.参数返回,可以显示加:return 返回,如果不加,将以最后一条命令运行结果,作为返回值. retu

Linux Shell 自定义函数(定义、返回值、变量作用域)介绍

定义Shell函数(define function) 语法: [ function ] funname [()] { action; [return int;] } 说明: 1. 可以带function fun() 定义,也可以直接fun() 定义,不带任何参数. 2. 参数返回,可以显示加:return 返回,如果不加,将以最后一条命令运行结果,作为返回值. return后跟数值n(0-255). 示例(test_fun.sh): #!/bin/sh fSum 3 2; fSum() { ec

Shell脚本笔记(一)概念和变量

概念和变量 一.认识Shell脚本 Shell是一种命令解释器,作用是按次序执行(遇到子脚本,先执行子脚本的命令)用户输入的命令和程序. Shell脚本语言是弱类型语言,与其他脚本语言相比的优势是可以处理偏操作系统底层的业务. 查看系统默认Shell: #方法一: echo $SHELL #方法二: grep root /etc/passwd 开发规范: 1)脚本第一行指定解释器 #!/bin/bash 2)开头添加版本.版权等信息 3)脚本中尽量不要用中文 4)扩展名为.sh 5)脚本应放在固

Shell脚本快速部署Kubernetes集群系统

本文紧跟上节所讲的手动部署Kubernetes管理Docker篇所写,本篇主要内容利用Shell脚本完成快速部署Kubernetes集群.上节博文看过的朋友也能感觉到部署过程相对比较简单,那么,出于简化工作流程,推进运维自动化角度来说,于是花了2/3天时间写这个部署Kubernetes脚本. 运维工作中,常常会遇到部署各种各样的服务,建议:常规部署都应该尽量使用脚本完成,一方面提高自身脚本编写能力,另一方面推进运维自动化. 详细部署说明文档:http://lizhenliang.blog.51c

shell脚本程序中的部分常用环境变量和参数变量的说明以及简单shell脚本示例

环境变量 $HOME 当前用户的家目录 $PATH 以冒号分隔的用来搜索命令的目录列表 $PS1 命令提示符,通常是$字符,但在bash中,可以使用一些更复杂的值.例如,字符串[\[email protected]\h\w]$就是一个流行的默认值,它给出用户名/机器名和当前的目录名,当然也包括一个$提示符. $PS2 二级提示符,用来表示后续的输入,通常是 > 字符. $IFS 输入域分隔符.当shell读取输入时,它给出用来分隔单词的一组字符,他们通常是空格,制表符和换行符. $0 shell

shell脚本中定义路径变量出现的BUG

=========================================================================== if 语句中的定义路径变量 引发命令的PATH路径改变出现的bug 问题 原脚本文件:inotify +rsync 实时共享 #!/bin/bash PATH=/data/ IP=172.16.1.41 cd $PATH &&\ 切换到一个新的变量中了 /usr/bin/inotifywait -mrq --format '%w%f' -e

通过shell脚本获取日期,并赋给变量

通过shell获取当前8位日期,并赋给变量,并且使用变量作为文件名,建立文件夹 代码如下: ls_date=`date +%Y%m%d` mkdir ${ls_date} 上面两句代码虽然简单 但是在应用中比较实用 获取日期注意事项:date +%Y%m%d 这个字符串是被英文状态下的ESC下面那个键 获取变量注意事项:必须有$与{变量名}组成

shell脚本,批量创建10个系统帐号并设置密码为随机8位字符串。

[[email protected] wyb]# cat user10.sh #!/bin/bash #批量创建10个系统帐号wangyb01-wangyb10并设置密码(密码为随机8位字符串). >user.list for user in `seq -w 10` do useradd wangyb$user password=`echo $RANDOM|md5sum|cut -c 1-8` echo $password|passwd wangyb$user --stdin echo wang