我将以下代码添加到空 ~/.bash_profile 文件中,重新启动并通过 ssh 登录到服务器后,我收到语法错误:文件 .bash_profile 意外结束
NODE_ENV=production
if [ -f ~/.bashrc ]; then . ~/.bashrc fi
我使用 python 3.7,但也安装了 3.6 和 2.7,我使用的是 Ubuntu 16.04 LTS。
我将 python 的顺序更改为 python 2.7 仍然无法正常工作,我在 VMware 上使用它。我想我对 python3 进行了更改,我安装了很多包。
我正在尝试运行 jupyter notebook,但我无法弄清楚可能导致问题的原因。
当我尝试从终端运行 ipython 时,它显示:
stealth@ubuntu:~/Desktop$ ipython
Traceback (most recent call last):
File "/home/stealth/.local/bin/ipython", line 7, in <module>
from IPython import start_ipython
File "/home/stealth/.local/lib/python3.7/site-packages/IPython/__init__.py", line 55, in <module>
from .core.application import Application
File "/home/stealth/.local/lib/python3.7/site-packages/IPython/core/application.py", line 25, in <module>
from IPython.core import release, crashhandler
File "/home/stealth/.local/lib/python3.7/site-packages/IPython/core/crashhandler.py", line 27, in <module>
from IPython.core import ultratb
File "/home/stealth/.local/lib/python3.7/site-packages/IPython/core/ultratb.py", line 116, in <module>
from IPython.utils import path as util_path
File "/home/stealth/.local/lib/python3.7/site-packages/IPython/utils/path.py", line 17, in <module>
from IPython.utils.process import system
File "/home/stealth/.local/lib/python3.7/site-packages/IPython/utils/process.py", line 19, in <module>
from ._process_posix import system, getoutput, arg_split, check_pid
File "/home/stealth/.local/lib/python3.7/site-packages/IPython/utils/_process_posix.py", line 23, in <module>
import pexpect
File "/usr/lib/python3/dist-packages/pexpect/__init__.py", line 75, in <module>
from .pty_spawn import spawn, spawnu
File "/usr/lib/python3/dist-packages/pexpect/pty_spawn.py", line 15, in <module>
from .spawnbase import SpawnBase
File "/usr/lib/python3/dist-packages/pexpect/spawnbase.py", line 218
def expect(self, pattern, timeout=-1, searchwindowsize=-1, async=False):
^
SyntaxError: invalid syntax
很少注意,在 ext HDD 上以 root 身份执行操作后,我没有使用正确的命令禁用 root,而是使用了这种语法
sudo -l passwd
我得到了这个输出
/usr/bin/passwd
我从手册页中知道passwd,但我不明白这个结果,因为我使用的语法对我来说似乎是无稽之谈。你能解释一下这个输出背后的逻辑吗?
我正在制作一个脚本来打印 ZFS 文件系统信息 - 目前处于测试阶段,我遇到了一个奇怪的错误。
我的初始脚本的相关位是这样的:
zfs_human="$(zfs list | head -n 2 | tail -n 1)"
dfs_human="$(df -h | grep 'zfs' | head -n 1)"
zfs_usedh="$(echo $zfs_human | cut -d ' ' -f2)"
zfs_totah="$(echo $dfs_human | cut -d ' ' -f2)"
echo "$zfs_human"
echo "$dfs_human"
echo "$zfs_usedh"
echo "$zfs_totah"
给出以下输出:
zfs 2.31M 5.27T 34.4K /mnt/zfs
zfs 5.3T 128K 5.3T 1% /mnt/zfs
2.31M
5.3T
但是,当我运行时shellcheck
,它说我应该在命令替换中用双引号引起来,这是来自的输出shellcheck
:
In zfsspace.sh line 5:zfs_usedh="$(echo $zfs_human | cut -d ' ' -f2)" ^--------^
SC2086: Double quote to prevent globbing and word splitting.
Did you mean:
zfs_usedh="$(echo "$zfs_human" | cut -d ' ' -f2)"
In zfsspace.sh line 6:zfs_totah="$(echo $dfs_human | cut -d ' ' -f2)" ^--------^
SC2086: Double quote to prevent globbing and word splitting.
Did you mean:
zfs_totah="$(echo "$dfs_human" | cut -d ' ' -f2)"
然后我当然将我的代码更改为 shellcheck 的建议:
zfs_human="$(zfs list | head -n 2 | tail -n 1)"
dfs_human="$(df -h | grep 'zfs' | head -n 1)"
zfs_usedh="$(echo "$zfs_human" | cut -d ' ' -f2)"
zfs_totah="$(echo "$dfs_human" | cut -d ' ' -f2)"
echo "$zfs_human"
echo "$dfs_human"
echo "$zfs_usedh"
echo "$zfs_totah"
但现在输出是这样的:
zfs 2.31M 5.27T 34.4K /mnt/zfs
zfs 5.3T 128K 5.3T 1% /mnt/zfs
第 3 行和第 4 行是空白的,这意味着在遵循 shellcheck 的建议时,第 3 和第 4 个命令替换不起作用,但在不引用我回显的变量时起作用。
我在 Ubuntu 20.04.1 上使用 Bash 5.0.17
请问有人能解释一下吗???谢谢。
我正在尝试创建倒计时 - 很可能是艰难的方式。我有这样的设置:
#! /bin/bash
#When to execute command
execute=$(date +"%T" -d "22:30:00")
#Current time
time=$(date +"%T")
#Subtract one from the other.... the below is line 11
math=$(("$execute"-"$time"))
#Repeat until time is 22:30:00
until [ "$math" == "00:00:00" ]; do
echo "Countdown is stopping in $math"
sleep 1
clear
done
问题是......它不起作用。这是终端中的输出:
/path/to/file/test.sh: line 11: 22:30:00-16:39:22: syntax error in expression (error token is “:30:00-16:39:22”)
Countdown is stopping in
首先,错误信息,有什么问题?
其次,“倒计时正在停止”消息应该有倒计时将停止的小时、分钟和秒。为什么不呢?请记住,我不是专业人士。
在 Ubuntu 20.04 中从其ppa安装亮度控制器时,它显示无效的语法错误
Setting up brightness-controller (2.3.4-0~202004250741~ubuntu20.04.1) ...
File "/usr/share/brightness-controller/util/write_config.py", line 21
def _default_config(config, display_type: str = 'primary'):
^
SyntaxError: invalid syntax
dpkg: error processing package brightness-controller (--configure):
installed brightness-controller package post-installation script subprocess returned error exit status 101
但是,当我直接从源代码运行 python 文件时,它没有显示任何错误。尽管在安装过程中显示此错误,但程序确实安装并正确运行,并且在调用 write_config.py 的相关函数时不会打印任何语法错误(从终端调用时)。
知道为什么 dpkg 显示 Python 文件的语法错误而 Python 本身没有显示任何错误吗?以及如何解决?
例如,以下命令不起作用:
if [[-e xyz]]; then echo File exists;fi
ksh 给出以下错误
[[-e: command not found
那是因为“[[-”是模棱两可的吗?
最近我想阅读 mplayer 的手册页。所以我需要man mplayer
在终端中输入。
然而,由于笨拙,我打字man mplayer>
。
我知道我可以使用该命令将输出重定向到一个文本文件。
但是谁能告诉我当我忘记定义目的地时到底发生了什么,就像我做的那样man mplayer>
?如果有的话,它会重定向到哪里?
我得到错误
bash: syntax error near unexpected token `newline'
在 bash 或
fish: Expected a string, but instead found end of the statement
man mplayer>
^
在鱼。
在 andvance 中有很多 Tnx。罗西卡
我的系统:Linux/Lubuntu 18.04.2。LTS,64 位
下面我有一个我编写的 shell 脚本,当我尝试执行它时,我的终端出现错误,描述了“expecting fi”关键字。我已经在 done 关键字之前写下了它,但仍然没有设法克服错误。谁能告诉我如何解决这个错误以及我在哪里犯了错误?
VAL1=0
VAL2=0
while [ "$VAL1" -eq 0 ] && [ "$VAL2" -eq 0 ]
do read -p "Enter values for both numbers" VAL1 VAL2
if [ "$VAL1" -eq 99 ] || [ "$VAL1" -eq 99 ]
then break
else read -p "Enter value number two" VAL2
if [ "$VAL2" -eq 0 ]
then echo "Cannot divide by zero"
else echo $(( VAL1 / VAL2 ))
fi
done
今天我打开gnome-terminal
了,我写了
ls && sleep 4 && gnome-terminal
命令完成后打开另一个终端ls
并等待 4 秒。
因此,在之前的命令完全运行(包括sleep 4
)之后,它成功地打开了一个新终端。
之后,下次我输入一个新命令
ls -lR && sleep 4 && gnome-terminal
该命令ls -lR
在 3 秒后完成,但之后没有任何命令sleep 4
并gnome-terminal
成功运行。
问题是什么?