echo $(ls -lh ${dir_path}"/"$file | awk '{print $5 $9}')这句话的错误
时间: 2024-04-11 15:27:38 浏览: 15
抱歉,我之前提供的代码有一个错误。在使用`ls`和`awk`命令组合时,应该使用反引号(`)而不是括号($())来包裹整个命令。以下是更正后的代码:
```shell
echo `ls -lh ${dir_path}"/"$file | awk '{print $5 $9}'`
```
或者,你也可以使用$()来包裹整个命令,但需要将ls和awk命令放在双引号内,如下所示:
```shell
echo "$(ls -lh ${dir_path}/${file} | awk '{print $5 $9}')"
```
无论哪种方式,都可以将`${dir_path}"/"${file}`替换为`${dir_path}/${file}`以获取正确的文件路径。这样,它将输出文件的大小和名称。希望这次能解决问题!如果还有其他问题,请随时提问。
相关问题
LIST_FILE_OR_DIR_SIZE() { dir_path=$1 file_list=$(ls ${dir_path}) for file in ${file_list}; do if [ -d ${dir_path}"/"$file ]; then #注意此处之间一定要加上空格,否则会报错 LOG $(du -sh ${dir_path}"/"$file) else LOG $(ls -lh ${dir_path}"/"$file | awk '{print $5 $9}') fi done } 上述的函数如何调用
要调用上述函数,你可以按照以下步骤进行:
1. 将给定函数添加到你的shell脚本文件中。
2. 在需要调用函数的地方使用`LIST_FILE_OR_DIR_SIZE 目录路径`的格式来调用函数。
下面是一个示例:
```shell
#!/bin/bash
# 定义函数
LIST_FILE_OR_DIR_SIZE() {
dir_path=$1
file_list=$(ls ${dir_path})
for file in ${file_list}; do
if [ -d ${dir_path}"/"$file ]; then
echo $(du -sh ${dir_path}"/"$file)
else
echo $(ls -lh ${dir_path}"/"$file | awk '{print $5 $9}')
fi
done
}
# 调用函数
LIST_FILE_OR_DIR_SIZE "/path/to/directory"
```
在上述示例中,将`/path/to/directory`替换为你想要查看的目录路径。当你运行脚本时,将会调用`LIST_FILE_OR_DIR_SIZE`函数并传递目录路径作为参数,从而输出目录中文件和文件夹的大小信息。
sh 语言 set BASE_CASE = echo $1 | awk '{print toupper($0)}' echo $BASE_CASE set CASE = echo $2 | awk '{print toupper($0)}' echo $CASE set base_tc = ddr_system_$1_tc001 set base_veq = ddr_system_$1_vsequence set tc = ddr_system_tc_$2 set veq = ddr_system_$2_vsequence set tc_path = $ddr_tc_path/lpddr/lpddr_system/testcase set veq_path = $ddr_tc_path/lpddr/lpddr_system/vsequence cp -rf ${veq_path}/${base_veq}.sv ${veq_path}/${veq}.sv cp -rf ${tc_path}/${base_tc}.sv ${tc_path}/${tc}.sv sed -i "s/$1/$2/g" ${veq_path}/${veq}.sv sed -i "s/$1/$2/g" ${tc_path}/${tc}.sv sed -i "s/${BASE_CASE}/${CASE}/g" ${veq_path}/${veq}.sv sed -i "s/${BASE_CASE}/${CASE}/g" ${tc_path}/${tc}
这段代码还是 shell 脚本,只是中间的赋值语句的语法格式不太对,应该使用 `=` 而不是 `=`,应该是这样的:
```
BASE_CASE=`echo $1 | awk '{print toupper($0)}'`
echo $BASE_CASE
CASE=`echo $2 | awk '{print toupper($0)}'`
echo $CASE
base_tc=ddr_system_$1_tc001
base_veq=ddr_system_$1_vsequence
tc=ddr_system_tc_$2
veq=ddr_system_$2_vsequence
tc_path=$ddr_tc_path/lpddr/lpddr_system/testcase
veq_path=$ddr_tc_path/lpddr/lpddr_system/vsequence
cp -rf ${veq_path}/${base_veq}.sv ${veq_path}/${veq}.sv
cp -rf ${tc_path}/${base_tc}.sv ${tc_path}/${tc}.sv
sed -i "s/$1/$2/g" ${veq_path}/${veq}.sv
sed -i "s/$1/$2/g" ${tc_path}/${tc}.sv
sed -i "s/${BASE_CASE}/${CASE}/g" ${veq_path}/${veq}.sv
sed -i "s/${BASE_CASE}/${CASE}/g" ${tc_path}/${tc}
```
注意,在 shell 中,变量赋值时不能有空格,应该使用 `=` 而不是 `=`。