Shell基础-Bash变量

本文详细介绍Bash环境下的变量设置规则及使用方法,包括变量的定义、调用、叠加、查看和删除等操作,并介绍了环境变量与本地变量的区别,以及如何进行数值运算。
Shell基础-Bash变量

变量设置规则
1)名称
     可由字母,数字和下划线组成,不能以数字开头
2)在Bash中,变量的默认类型都是字符串型。如果要进行数值运算,则必须指定变量为数值型。
3)变量用等号连结值,等号左右两侧不能有空格。
4)变量的值如果有空格,需要使用单引号或双引号。
5)在变量的值中,可以使用"\"转义符。
6)进行变量的叠加需要用双引号"$变量名"或用${变量名}。
7)把命令结果作为变量值赋予变量,需要反引号或用$(); name=$(date)
8)环境变量名建议大写,便于区分

变量分类
用户自定义变量:本地变量,只在当前的Shell中生效
本地变量
变量定义:a=1
变量调用:echo $a
变量叠加: a="a"22
变量查看(所有):set
变量删除:unset a
环境变量:它主要保存的是和系统操作环境相关的数据,会在当前的Shell和这个Shell的所有子Shell当中生效。如果写入配置文件中,那么它会在一系列Shell中生效。
变量定义:export 变量名=变量值
变量调用:echo $a
变量查询:env
变量删除:unset 变量名
系统常见环境变量
PATH:系统查找命令的路径,写在这里的路径,不需要写路径,就可以执行。
            也可以用变量叠加的方式临时把写的脚本加入PATH中,PATH="$PATH":/root/sh
PS1:定义系统提示符的变量。例如:[root@hhh~]# 就是 [\u@\h \w]\$ 。
位置参数变量:它主要是用来向脚本当中传递参数或数据的,变量名不能自定义,变量作用是固定的,只能改变值。
位置参数变量            作用
     $n                n为数字,$0代表命令本身,$1-$9代表第1到第9参数,10以上参数要用大括号,${11}。
     $*                 代表命令行中所有的参数,把所有参数当成一个整体。
     $@               也代表命令行中所有的参数,不过它把每个参数区分了,每个参数是独立的个体。
     $#                命令行中所有参数的个数
$n的应用:
写一个脚本hh
#!/bin/bash
num1=$1
num2=$2
sum=$(($num1+$num2))
echo "sum is : $sum"
执行脚本./hh  1  2
sum is : 3
预定义变量:是Bash中已经定义好的,变量名不能自定义,其作用也是固定的,只能改值。
预定义变量                 作用
    $?            判断前一命令是否正确,若正确,返回0;若不正确,返回非0;
    $$             当前进程的进程号(PID)
    $!             后台运行的最后一个进程的进程号。
接受键盘输入
read [选项] [变量名]
选项:
-p   “提示信息”: 输出提示信息
-t 秒数:        等待用户输入时间
-n 字符数:    接收到指定字符数,就会执行
-s :        隐藏输入数据
例子:read -n 1 -t 30 -p "please select your gender[M/F]:" gender

数值运算
在Linux中变量默认是字符串。所以$a=1\n $b=2\n $c=$a+$b\n echo的$c是1+2;
所以要进行数值运算,可以采用以下方法;
 一、declare 声明变量类型
declare [+/-][选项] 变量名
选项:
-:  给变量设定类型属性
+: 取消变量类型属性
i:  将变量声明为整数型
x:   将变量声明为环境变量
p: 显示变量类型
例子:$a=1\n $b=2\n declare -i $c=$a+$b\n echo的$c是3;
二、expr 或 let 数值运算工具
d=$(expr $a + $b)\n echo的$d是3;
三、 $((运算式)) 或 $[运算式]
f=$(($a+$b))
g=$[$a+$b]


变量测试
多用于写脚本时,不过还是用if代替。
### 解决方案 在终端中遇到 `bash` 报错未找到 `spark-shell` 命令的问题,通常是由以下几个原因导致的:环境变量未正确配置、安装路径不正确或权限不足。以下是针对该问题的详细分析与解决方法。 #### 1. 确认 Spark 是否正确安装 如果系统中已经安装了 `pyspark`,可能会导致冲突,尤其是在命令行中运行 `spark-shell` 时。建议先卸载 `pyspark` 并重新检查 Spark 的安装状态[^1]。 ```bash pip uninstall pyspark ``` #### 2. 配置环境变量 确保 Spark 的安装路径已正确添加到系统的环境变量中。如果没有正确配置,系统将无法识别 `spark-shell` 命令。以下是具体操作步骤: - 打开终端并编辑 `.bashrc` 或 `.zshrc` 文件(取决于使用的 Shell 类型)。 - 添加以下内容以设置 `SPARK_HOME` 和 `PATH` 环境变量: ```bash export SPARK_HOME=/path/to/spark # 替换为实际的 Spark 安装路径 export PATH=$SPARK_HOME/bin:$PATH ``` - 保存文件后,运行以下命令使更改生效: ```bash source ~/.bashrc # 或者如果是 zsh source ~/.zshrc ``` #### 3. 检查用户权限 如果 Spark 是由其他用户安装的,当前用户可能没有足够的权限访问相关目录或执行命令。这种情况下,可以尝试切换到正确的用户(如 `hdfs` 用户)来启动 Spark[^2]。 ```bash su hdfs spark-shell ``` #### 4. 确认 Spark 的安装路径 如果上述方法均无效,可能是 Spark 的安装路径不正确或未正确解压。请确认以下几点: - Spark 是否已成功解压到指定目录。 - `spark-shell` 是否存在于 `$SPARK_HOME/bin` 目录下。 如果发现路径错误,可以重新下载并解压 Spark: ```bash wget https://downloads.apache.org/spark/spark-3.3.0/spark-3.3.0-bin-hadoop3.tgz tar -xvzf spark-3.3.0-bin-hadoop3.tgz mv spark-3.3.0-bin-hadoop3 /usr/local/spark ``` #### 5. 测试 Spark 安装 完成以上步骤后,可以通过以下命令测试 Spark 是否正常工作: ```bash spark-shell --version ``` 如果输出 Spark 的版本信息,则说明安装成功。 --- ### 注意事项 - 如果使用的是 Windows 系统,请确保将 Spark 的 `bin` 目录添加到系统的 `PATH` 环境变量中。 - 如果仍然报错,可以检查日志文件(通常位于 `$SPARK_HOME/logs`)以获取更多调试信息。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值