bash中的quote(/,',")

本文介绍了Shell脚本中单引号、双引号及转义字符的使用方法,包括如何正确地组合引用以避免语法错误,以及如何输出特殊字符如引号和斜杠等。此外还提供了一些实用的例子来帮助理解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Quoted characters do not have a special meaning

以下的命令都一个执行:
touch 'file1 file2'
ls 'file1 file2'
rm 'file1 file2'
touch file1' 'file2
ls file1' 'file2
rm file1' 'file2
touch f'ile1 file'2
ls f'ile1 file'2
rm f'ile1 file'2
touch "file1 file2"
ls "file1 file2"
rm "file1 file2"
touch file1" "file2
ls file1" "file2
rm file1" "file2
touch file"1 f"ile2
ls file"1 f"ile2
rm file"1 f"ile2

Single quotes(') is strong quote; double quote(") is weak quote;
but backslash(/) is the strongest of all.

If you want to quote single quotes, use double quotes around it.
to quote double quotes, use single quotes

In fact, you don't want to put quotes within quotes,
you want to combine or concatenate several units into one argument.
For example:
awk '{print $'$1'}'
the shell breaks up the argument to awk into three pieces:
{print $    Quoted
$1            Evaluated
}            Quoted

However - there is a problem with this script. If you have a space as an argument, the script would cause a syntax error A better version would protect from this happening:
awk '{print $'”$1“'}'

再比如:
sed -n 's/'"$1"'/&/p'

 

输出单引号

echo /'

输出双引号

echo /"

输出反斜线

echo //

输出'"/
echo /'/"//

 

输出双引号

echo '"'
echo "/""


输出$HOME

echo '$HOME'

输出当前环境变量HOME的内容
echo "$HOME"

 

输出`pwd`

echo '`pwd`'

输出当前的工作目录
echo "`pwd`"

 

输出单引号

echo ''"'"''
echo "'"
echo ''/'''

bashrc文件如下# ~/.bashrc: executed by bash(1) for non-login shells. # see /usr/share/doc/bash/examples/startup-files (in the package bash-doc) # for examples # If not running interactively, don't do anything case $- in *i*) ;; *) return;; esac # don't put duplicate lines or lines starting with space in the history. # See bash(1) for more options HISTCONTROL=ignoreboth # append to the history file, don't overwrite it shopt -s histappend # for setting history length see HISTSIZE and HISTFILESIZE in bash(1) HISTSIZE=1000 HISTFILESIZE=2000 # check the window size after each command and, if necessary, # update the values of LINES and COLUMNS. shopt -s checkwinsize # If set, the pattern "**" used in a pathname expansion context will # match all files and zero or more directories and subdirectories. #shopt -s globstar # make less more friendly for non-text input files, see lesspipe(1) [ -x /usr/bin/lesspipe ] && eval "$(SHELL=/bin/sh lesspipe)" # set variable identifying the chroot you work in (used in the prompt below) if [ -z "${debian_chroot:-}" ] && [ -r /etc/debian_chroot ]; then debian_chroot=$(cat /etc/debian_chroot) fi # set a fancy prompt (non-color, unless we know we "want" color) case "$TERM" in xterm-color|*-256color) color_prompt=yes;; esac # uncomment for a colored prompt, if the terminal has the capability; turned # off by default to not distract the user: the focus in a terminal window # should be on the output of commands, not on the prompt #force_color_prompt=yes if [ -n "$force_color_prompt" ]; then if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then # We have color support; assume it's compliant with Ecma-48 # (ISO/IEC-6429). (Lack of such support is extremely rare, and such # a case would tend to support setf rather than setaf.) color_prompt=yes else color_prompt= fi fi if [ "$color_prompt" = yes ]; then PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ ' else PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ ' fi unset color_prompt force_color_prompt # If this is an xterm set the title to user@host:dir case "$TERM" in xterm*|rxvt*) PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1" ;; *) ;; esac # enable color support of ls and also add handy aliases if [ -x /usr/bin/dircolors ]; then test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)" alias ls='ls --color=auto' #alias dir='dir --color=auto' #alias vdir='vdir --color=auto' alias grep='grep --color=auto' alias fgrep='fgrep --color=auto' alias egrep='egrep --color=auto' fi # colored GCC warnings and errors #export GCC_COLORS='error=01;31:warning=01;35:note=01;36:caret=01;32:locus=01:quote=01' # some more ls aliases alias ll='ls -alF' alias la='ls -A' alias l='ls -CF' # Add an "alert" alias for long running commands. Use like so: # sleep 10; alert alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"' # Alias definitions. # You may want to put all your additions into a separate file like # ~/.bash_aliases, instead of adding them here directly. # See /usr/share/doc/bash-doc/examples in the bash-doc package. if [ -f ~/.bash_aliases ]; then . ~/.bash_aliases fi # enable programmable completion features (you don't need to enable # this, if it's already enabled in /etc/bash.bashrc and /etc/profile # sources /etc/bash.bashrc). if ! shopt -oq posix; then if [ -f /usr/share/bash-completion/bash_completion ]; then . /usr/share/bash-completion/bash_completion elif [ -f /etc/bash_completion ]; then . /etc/bash_completion fi fi export PYTHONPATH=$PYTHONPATH:/usr/lib/python3.8/dist-packages source /opt/ros/noetic/setup.bash source ~/ackermann_ws/devel/setup.bash source /opt/ros/noetic/setup.bash source /home/wz602-1/Downloads/yunzong/Sunray_swarm/devel/setup.bash # >>> conda initialize >>> # !! Contents within this block are managed by 'conda init' !! __conda_setup="$('/home/wz602-1/miniconda3/bin/conda' 'shell.bash' 'hook' 2> /dev/null)" if [ $? -eq 0 ]; then eval "$__conda_setup" else if [ -f "/home/wz602-1/miniconda3/etc/profile.d/conda.sh" ]; then . "/home/wz602-1/miniconda3/etc/profile.d/conda.sh" else export PATH="/home/wz602-1/miniconda3/bin:$PATH" fi fi unset __conda_setup # <<< conda initialize <<< source /home/wz602-1/catkin_ws/devel/setup.bash export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:~/catkin_ws/ source /opt/ros/noetic/setup.bash export GTK_IM_MODULE=fcitx export XMODIFIERS=@im=fcitx export QT_IM_MODULE=fcitx
最新发布
07-15
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值