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 等等重要路径。
你不能随便更改。
你自定义的变量,不能和系统变量重名了。
你可以定义为
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 建议不要依赖单独的 which
command,而只需使用内置的 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 行中检查的内容 - 无论使用 which
或 command -v
。
如何安装psql
命令取决于您的操作系统。
【讨论】:
谢谢我安装了 postgres 并且它工作正常。已经坐了一段时间了,我不会继续学习......快乐编码以上是关于linux脚本运行失败的主要内容,如果未能解决你的问题,请参考以下文章