linux脚本运行失败

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux脚本运行失败相关的知识,希望对你有一定的参考价值。

#!/bin/bash
PATH=/report/site
echo "number :" `ls /users | wc -l` >> $PATH/report.txt

出现报错
nowsiteNo.sh: line 3: ls: command not found
nowsiteNo.sh: line 3: wc: command not found

请问为什么,不用变量,用绝对路径就可以成功运行。望指教

PATH 是系统使用的环境变量。PATH 中有 /usr/bin: /bin 等等重要路径。


你不能随便更改。


你自定义的变量,不能和系统变量重名了。


你可以定义为


#!/bin/bash
jy01299803_PATH=/report/site

echo "number :" `ls /users | wc -l` >> $jy01299803_PATH/report.txt

参考技术A PATH=/report/site

你确定你要用的命令都在这个目录里,而且你只能从这个目录运行程序。
你是不是不知道这个变量的用处啊?
参考技术B 把PATH变量名改一下就好,不用大写就行。PATH是系统保留的全集变量。 参考技术C path是系统环境变量,你不能乱用的。。。把path改成lujing,就好了。

用于在 Linux 上运行 postgres docker 映像失败的 Bash 脚本

【中文标题】用于在 Linux 上运行 postgres docker 映像失败的 Bash 脚本【英文标题】:Bash script for running postgres docker image failing on linux 【发布时间】:2021-01-11 16:19:45 【问题描述】:

intellij 说,下面脚本第 4 行的命令 which 似乎有问题

这是非标准的。改用内置的'command -v'

由于which psql 似乎无法正常工作,它会自动影响第 12 行和第 13 行。

在调查时我删除了第 4 行,然后脚本执行了第 6 到 10 行,这成功创建了一个 docker 文件(pg-docker)但是我还需要执行 schema.sql(第 12 行)和 data.sql(13) . which 命令是否有替代命令(第 4 行)

以下是我的 bash 脚本:

#!/usr/bin/env bash
set -euo pipefail

which psql > /dev/null || (echo "Please ensure that postgres client is in your PATH" && exit 1)

mkdir -p $HOME/docker/volumes/postgres
rm -rf $HOME/docker/volumes/postgres/data

docker run --rm --name pg-docker -e POSTGRES_PASSWORD=postgres -e POSTGRES_DB=dev -d -p 432:5432 -v $HOME/docker/volumes/postgres:/var/lib/postgresql postgres
sleep 3
export PGPASSWORD=postgres
psql -U postgres -d dev -h localhost -f schema.sql
psql -U postgres -d dev -h localhost -f data.sql

我得到以下关于 Intellij 问题的信息

第 4 行抱怨哪个命令 第 6,7 和 9 行抱怨 $HOME 第 11 行抱怨 PGPASSWORD

【问题讨论】:

下次粘贴脚本时,请确保它有点可读性,并且每行后不包含不需要的字符,例如 12   <br> 【参考方案1】:

which 用于查找和显示命令的完整路径(在您的脚本中,它仅用于确保命令 psql 存在)。 IntelliJ 或可能更好的为 (bash) 脚本定义的 linter 建议不要依赖单独的 whichcommand,而只需使用内置的 bash 函数 command -v,这样第 4 行就会显示

command -v psql > /dev/null || (echo "Please ensure that postgres client is in your PATH" && exit 1)

也就是说 - 这很可能不是您真正的问题。您需要安装 PostgreSQL 客户端 psql 并在 PATH 变量中运行第 12 行和第 13 行中的命令。这正是您在第 4 行中检查的内容 - 无论使用 whichcommand -v。 如何安装psql 命令取决于您的操作系统。

【讨论】:

谢谢我安装了 postgres 并且它工作正常。已经坐了一段时间了,我不会继续学习......快乐编码

以上是关于linux脚本运行失败的主要内容,如果未能解决你的问题,请参考以下文章

linux脚本运行失败

linux怎样一次运行多个shell脚本?

Java在linux上调用shell脚本

当 sftp 语句之一在 Linux 中失败时,sftp 脚本失败

在 AIX 上运行 Linux Shell

Linux系统shell脚本之监控httpd服务