该SHELL用于计算/opt/src/中有多少文件,但实际运行中无论/opt/src/下有多少文件,最后输出都是0。
经查,造成这个问题的原因是while循环位于管道中,这意味着在运行过程中,while循环实际是位于一个新的SHELL中的,while循环中的Counter变量和文件开头定义的Counter变量是两个不同的变量,所以while循环中所改变的值在while循环结束后无法保存下来。
解决办法:
#!/bin/sh
Counter=0
ls /opt/src/ > /tmp/t1.txt
while read LINE
let "Counter=Counter+1"
done < t1.txt
rm /tmp/t1.txt -f
echo $Counter
问题SHELL举例:#!/bin/shCounter=0ls /opt/src/ | while read LINEdolet "Counter=Counter+1"doneecho $Counter 该SHELL用于计算/opt/src/中有多少文件,但实际运行中无论/opt/src/下有多少文件,最后输出都是0。经查,造成这个问题的原因是while循环位
除非对
变量
进行export,否则子
shell
无法
继承父
shell
的
变量
、或者说父
shell
定义的
变量
在子
shell
中
不可见。(根据《Linux命令行与
Shell
脚本大全》,第6章,6.2.1)
在实践
中
,命令替换与圆括号命令组,都可以使用当前
shell
环境当
中
的
变量
,如下
需求:公司今早大量接口加载失败,原因是对端ftp服务器挂掉了,需要自己手动加载接近100个接口文件入库,为了减少大量时间,所以想到了用
shell
脚本来批量处理。
需要加载的文件:
完整脚本:
#!/bin/
bash
time=`date +%Y%m%d -d "2 day ago"`
op_time=`date +%Y%m%d`
bak_file=/opt/cqcrm/dfp/bak_interface #文件路径
in_file=/opt/cqcrm/dfp/in_interface/hw #加载文件路
运行
shell
时,会同时存在3种
变量
:
1) 局部
变量
局部
变量
在脚本或命令
中
定义,仅在当前
shell
实例
中
有效,其他
shell
启动的程序不能访问局部
变量
。
2) 环境
变量
所有的程序,包括
shell
启动的程序,都能访问环境
变量
,有些程序需要环境
变量
来保证其正常运行。必要的时候
shell
脚本也可以定义环境
变量
。
3)
shell
变量
shell
变量
是由
shell
程序设置的特殊
变量
。
shell
变量
中
有一部分是环境
变量
,有一部分是局部
变量
,这些
变量
保证了
shell
的正常运行
1 #!/bin/
bash
3 # Write a
bash
script to calculate the frequency of each word in a text file words.txt.
5 # For
重复执行一系列命令在编程
中
很常见。通常你需要重复一组命令直至达到某个特定条件,比如处理某个目录下的所有文件、系统上的所有用户或是某个文本文件
中
的所有行。
bash
shell
提供了 for 命令,允许你创建一个遍历一系列值的
循环
。每次迭代都使用其
中
一个值来执行已定义好的一组命令。下面是
bash
shell
中
for 命令的基本格式。
for var in list
用LangChain手写的一个简易版的AutoGPT完整代码,项目来源AGI课堂。我学习完并本地实际运行过了,可配套我的文章进行学习:
https://blog.csdn.net/Attitude93/article/details/136142086 ,帮助你更好地学习AutoGPT底层原理,同时助你熟悉LangChain的使用,包括了LangChain的所有核心模块:大模型封装、Prompt模板、输出解析器、Agents模块、记忆模块等。
适合学习LangChain或者AutoGPT,或者对AI Agent感兴趣的同学。
放心下载,不懂的可问我,一起探讨一起学习一起进步。AI时代,希望我们都能跟上步伐。
在每次迭代后,while
循环
会检查条件是否为真。如果条件为真,则执行
循环
体
中
的语句。一旦条件为假,
循环
将停止执行并继续执行
循环
后面的代码。
以下是一个示例,演示了如何使用while
循环
在
Shell
脚本
中
打印数字1到5:
```
shell
#!/bin/
bash
counter=1
while [ $counter -le 5 ]
echo $counter
counter=$((counter+1))
上述示例
中
,我们使用了一个计数器
变量
`counter`来追踪
循环
的迭代次数。在每次迭代
中
,我们打印计数器的值,并将计数器增加1。
循环
将在计数器的值达到5时停止。
Mar 7 21:15:29 pve mcelog[109071]: mcelog: failed to prefill DIMM database from DMI data
Mar 7 21:15:29 pve mcelog[109071]: mcelog: Cannot read sysfs field /sys/kernel/security/lockdown: No such file or directory
Mar 7 21:15:29 pve mcelog[109071]: Kernel in lockdown. Cannot enable DIMM error location reportingHardware event. This is not a software error.
Mar 7 21:15:29 pve mcelog[109071]: MCE 0
Mar 7 21:15:29 pve mcelog[109071]: CPU 8 BANK 0 TSC 6b430a19aa6
Mar 7 21:15:29 pve mcelog[109071]: TIME 1678185833 Tue Mar 7 18:43:53 2023
Mar 7 21:15:29 pve mcelog[109071]: MCG status:
Mar 7 21:15:29 pve mcelog[109071]: MCi status:
Mar 7 21:15:29 pve mcelog[109071]: Corrected error
Mar 7 21:15:29 pve mcelog[109071]: Error enabled
Mar 7 21:15:29 pve mcelog[109071]: MCA: Internal parity error
Mar 7 21:15:29 pve mcelog[109071]: STATUS 9000004000010005 MCGSTATUS 0
Mar 7 21:15:29 pve mcelog[109071]: MCGCAP 7000c16 APICID 16 SOCKETID 0
Mar 7 21:15:29 pve mcelog[10
[/code]
libvirt/qemu特性之numa
qq_57419640:
动态加载模块出现disagrees about version of symbol 问题分析
macWhale: